大家都来说说这两段程序的输出结果是什么
以下代码是基于linux系统的:#include<sys/types.h>
#include<unistd.h>
main()
{
pid_tpid;
printf("before fork() ");
pid = fork();
if(pid<0)
{
printf("error\n");
}
else if(pid==0)
{
printf("this is child\n");
}
else if(pid>0)
{
printf("this is parent!\n");
}
}
#include<sys/types.h>
#include<unistd.h>
main()
{
pid_tpid;
printf("before fork()\n "); /*请注意这里*/
pid = fork();
if(pid<0)
{
printf("error\n");
}
else if(pid==0)
{
printf("this is child\n");
}
else if(pid>0)
{
printf("this is parent!\n");
}
}
大家可以分析一下这两段程序输出的结果分别是什么,并且说一下为什么会是这样。 第一段结果:before fork() this is child
before fork() this is parent!
第二段结果:before fork()
this is child
this is parent!
应该是第一段结果多了个before fork()吧
我只知道,调用fork(),会先返回子进程的PID,再返回创建子进程的父进程的PID 跟踪了一下,发现before fork()在两段代码中都只执行了一次,但却不知为何第一段会多输出了一次,难道是编译器输出的问题? printf()是line buffer的,也就是碰到换行时才将当前缓冲输出 学习了。。。 well,一楼和四楼正解。
页:
[1]