如何测试Linux 中的wait函数能不能等待子进程的子进程?
2014-11-14 14:12
761 查看
#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高I/O Wait问题 – 如何发现linux中引起高io等待的进程
- 【经典转载】Linux进程学习系列之五 等待进程结束wait()和waitpid()函数
- Linux 父进程如何获取子进程返回值?parent get child process return value,fork,wait,wait_pid
- Linux编程基础之进程等待(wait()函数)
- Linux 等待进程结束 wait() 和 waitpid()
- wait命令_Linux wait 命令用法详解:等待进程执行完后返回
- linux进程系列(8)wait函数
- linux内核中等待队列 (函数wait_event与wake_up)
- Linux进程理解与实践(四)wait函数处理僵尸进程
- Linux系统进程控制编程(六)——wait和waitpid函数
- Linux进程理解与实践(四)wait函数处理僵尸进程
- 二十四、Linux 进程与信号---wait 函数
- linux 等待队列 wait_event wake_up等函数讲解
- linux下的wait()实现等待一个子进程和所有子进程退出
- Linux编程基础之进程等待(wait()函数)
- linux系统编程之进程(四):wait/waitpid函数与僵尸进程、fork 2 times
- Linux编程基础之进程等待(wait()函数)
- Linux--等待进程结束wait()和waitpid()
- Linux--等待进程结束wait()和waitpid()
- linux 进程等待 wait 、 waitpid