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

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

慕婉清6462132
浏览 361回答 2
2回答

慕码人8056858

不能等待子进程的子进程用下面一段程序测一下就知道了:#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;}

函数式编程

wait()只能等待直接子进程
打开App,查看更多内容
随时随地看视频慕课网APP