一个菜鸟问题 问Davidfox
能不能在解释的详细一些上一个问题和现在这个问题,我们在输出字付是有是为什么会出现在#号后,就好象b
root.....#ca
谢谢你的帮助 # 是linux超级用户的提示符
就像windows下的c:>一样 这是父子进程的同步问题,当父进程退出时,它当然要输出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 为什么父进程会先出呢,还有我前面以留了贴子,davidfox如果你看到请给我回答一下非常感谢 fork以后,父进程与子进程分道扬镳,分别受到调度,这种调度不是人为的,
可能是父进程先受到调度,也可能是子进程先受到调度
所以不能肯定是父进程先退出,还是子进程先退出
页:
[1]