Linux API 中的wait函数能不能等待子进程的子进程(孙子进程)?还是wait()只能等待直接子进程?
2 回答

慕码人8056858
TA贡献1803条经验 获得超6个赞
不能等待子进程的子进程
用下面一段程序测一下就知道了:
#include <stdio.h>
#include <stdlib.h>
int main()
{
pid_t pid = fork();
switch(pid)
{
case -1:
perror("fork failed");
exit(1);
case 0:
{
pid = fork();
if(pid == -1)
{
perror("fork failed");
exit(1);
}
else if(pid == 0)
{
sleep(2);
printf("第三个进程pid为:%d\n", getpid());
sync();
exit(0);
}
else
{
sleep(10);
printf("第二个进程收到%d\n", wait(NULL));
exit(0);
}
}
default:
printf("第一个进程pid为:%d\n", getpid());
printf("第二个进程pid为:%d\n", pid);
printf("第一个进程收到%d\n", wait(NULL));
printf("第一个进程收到%d\n", wait(NULL));
sync();
break;
}
return 0;
}
- 2 回答
- 0 关注
- 360 浏览
添加回答
举报
0/150
提交
取消