-
wait
系统调用wait等来调用进程的任何一个子进程终止,同时将该子进程的信息存储在status中
#include<sys/wait.h> pid_t wait(int *status) //成功:返回终止的子进程ID 失败:返回-1
如果调用之前并没有子进程终止,那么调用将一直阻塞,直到某一个子进程终止
如果调用进程的所有子进程都已经终止了,那么wait将返回-1,并且将errno置为ECHILD
通常使用如下代码来等待所有子进程退出
while((childPid = wait(NULL)) != -1) continue; if(errno != ECHILD) errExit("wait");
-
waitpid
wait系统调用只要当子进程终止时才能够获取到子进程的相关信息,而waitpid则可以获取到更多信息
进程的状态改变
当以下事件发生其一时,我们就说进程的状态发生改变
- 子进程调用_exit()(或exit())终止
- 子进程收到信号,并且因为该信号的默认行为(core | term)而终止
- 子进程因为信号而停止
- 停止的子进程收到SIGCONT信号而恢复运行
tlpi:进程的监控(wait(),waitpid)
最新推荐文章于 2022-02-09 15:28:50 发布