有个关于FORK函数的问题
先看一个程序
main()
{
pid_t pid;
if(pid=fork()<0)
{
printf("error!");
}
else
{
if(pid==0)
printf("a\n");
else
printf("b\n");
}
}
结果是返回a,b或者b,a
因为fork调用将执行两次返回分别从子进程和父进程返回
由于父进程和子进程无关,父进程与子进程都可能先返回
在看一个程序
main()
{
pid_t a_pid,b_fork;
if(a_pid=fork()<0)
{
printf("error!");
}
else
{
if(a_pid==0)
printf("b\n");
else
printf("a\n");
}
if(b_pid=fork()<0)
{
printf("error!");
}
else
{
if(b_pid==0)
printf("c\n");
else
printf("a\n");
}
}
如果是创建两个进程则出现结果
b
c
a
a
c
a
为什么会返回6个字母???????????