如何测试Linux 中的wait函数能不能等待子进程的子进程?

#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; }

[root@linux Desktop]# gcc b.c
[root@linux Desktop]# ./a.out
第一个进程pid为:3038
第二个进程pid为:3039 //等待大概两秒后输出第三行
第三个进程pid为:3040 //等待大概10秒后输出下面的
第二个进程收到3040
第一个进程收到3039
第一个进程收到-1      //注意看这儿
[root@linux Desktop]# 

Linux API 中的wait函数能不能等待子进程的子进程(孙子进程)?

还是wait()只能等待直接子进程?
答案:wait函数不能等待子进程的子进程
http://zhidao.baidu.com/link?url=jsjeZhdSBkjUpcISh2TS4IOM2EcGn5q9q-hlF9Ep3s3hBz-rwc8SLOO0z0GiRbVroCq5cnmGGvDoHc06zhRTSa

 

你可能感兴趣的:(linux)