QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1267|回复: 4

一个菜鸟问题 问Davidfox

[复制链接]
发表于 2003-11-3 18:00:19 | 显示全部楼层 |阅读模式
能不能在解释的详细一些上一个问题和现在这个问题,我们在输出字付是有是为什么会出现在#号后,就好象
b
root.....#ca
谢谢你的帮助
发表于 2003-11-3 20:06:11 | 显示全部楼层
# 是linux超级用户的提示符
就像windows下的c:>一样
回复

使用道具 举报

发表于 2003-11-4 10:26:11 | 显示全部楼层
这是父子进程的同步问题,当父进程退出时,它当然要输出shell提示符,
然后是子进程,由于父进程已经退出,所以它不会自动退出,一般都会在代码
中加上wait()系统调用,进行进程的同步。

/*test.c*/
#include <stdio.h>
#include <sched.h>

int main(void)
{
        int pid;

        setvbuf(stdout,(char*)NULL,_IONBF,0);
        putchar('a');
        printf("\n");

        pid=fork();
        if(pid==0)
        {
                printf("child\n");
                                exit();
        }
        printf("parent\n");
                wait();

        return 0;
}
/*****************************/
你试一下,是不是好了,我想应该没有提示#了,我没试,你自己
测一下把!!!!!!!!!!!!!!!!!!!!!!!!!
gcc test.c -o test
./test
回复

使用道具 举报

 楼主| 发表于 2003-11-5 16:11:22 | 显示全部楼层
为什么父进程会先出呢,还有我前面以留了贴子,davidfox如果你看到请给我回答一下非常感谢
回复

使用道具 举报

发表于 2003-11-5 16:49:37 | 显示全部楼层
fork以后,父进程与子进程分道扬镳,分别受到调度,这种调度不是人为的,
可能是父进程先受到调度,也可能是子进程先受到调度
所以不能肯定是父进程先退出,还是子进程先退出
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 07:35 , Processed in 0.070645 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表