- 论坛徽章:
- 0
|
废话不多说,代码如下:
#include"stdio.h"
#include"sys/types.h"
#include"unistd.h"
#include"stdlib.h"
int main()
{
int pid;
pid=vfork();
if (pid<0)
{
printf("error\n");
}else if(pid==0)
{
sleep(2);
printf("child done and propid is:%d pid is:%d\n",getpid(),pid);
//exit(0);
}else
{
printf("parents done and propid is:%d pid is:%d\n",getpid(),pid);
//exit(0);
}
}
本来按道理是子进程执行完毕之后,父进程再执行。可是结果如下:
child done and propid is:4574 pid is:0
parents done and propid is:4573 pid is:4574
child done and propid is:4575 pid is:0
子进程竟然执行了两次!
我把代码略加修改,取消了两个exit的注释或者把vfork修改为fork,结果就正常了。
感觉问题很奇怪,在此跪求大神解答,感激不尽~~~
|
|