为了账号安全,请及时绑定邮箱和手机立即绑定

您好,在Linux API 中的wait函数能不能等待子进程的子进程?为什么呢?

您好,在Linux API 中的wait函数能不能等待子进程的子进程?为什么呢?

慕婉清6462132 2022-01-04 10:06:45
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;
}



查看完整回答
反对 回复 2022-01-09
?
函数式编程

TA贡献1807条经验 获得超9个赞

wait()只能等待直接子进程

查看完整回答
反对 回复 2022-01-09
  • 2 回答
  • 0 关注
  • 360 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号