读书人

linux 中FORK()有关问题

发布时间: 2012-04-19 14:36:43 作者: rapoo

linux 中FORK()问题
#include<stdio.h>
int main()
{
int p1,p2;
p1=fork();
p2=fork();
printf("p1=%d p2=%d\n",p1,p2);
}

预期结果是
p1= a p2=b
p1=0 p2=b
p1=a p2=0
实际结果
p1= a p2=b
p1=0 p2=c
p1=a p2=0
p1=0 p2=0

自己猜想是不是 实际上是不是 产生了四个进程
main p1=a(main.p1) p2=b(main.p1)
main.p1 p1=0(本进程) p2=(main.p1.p2)c
mian.p2 p1=a(main.p1) p2=0(本进程)
mian.p1.p2 p1=0(这里不理解,是因为这里P1是父进程。不时同级到进程了嘛?) p2=0(本进程)
求高手指点

[解决办法]
4个进程。
fork一次,返回两次,一次父进程,一次子进程。
[解决办法]
父进程返回子进程的pid,子进程返回0

[解决办法]
4个进程,一个main进程(暂且这么说) 两个main的子进程,还有一个是第一个子进程产生的子进程。
[解决办法]
四个进程吗 第一次fork有父进程和第一个子进程,然后你这里不判断所以第二个fork在父进程中会执行,在子进程中也执行。在父进程中第二次fork就产生了第二个子进程。在第一个子进程执行,又产生了一个子进程的子进程。这个时候就有父进程,子进程一,子进程一的子进程,子进程二。

读书人网 >C++

热点推荐