wait和waitpid函数

当一个进程正常或异常终止,内核向其父进程发生SIGCHLD信号。

子进程终止是异步事件,可以在父进程运行的任何时候发生。

对于子进程终止信号,父进程可以忽略(默认)或调用wait、waitpid函数。

<span style="font-family:KaiTi_GB2312;font-size:18px;">#include<sys/types.h>
#include<sys/wait.h>
pid_t wait(int* statloc);
pid_t waitpid(pid_t pid,int* statloc,int options);
</span>

对于waitpid:

pid==-1,等待任一子进程。此时与wait等效。

pid>0,等待进程ID为pid的子进程。

pid==0,等待其组ID等于调用进程的组ID的任一子进程。

pid<-1,等待其组ID等于pid的绝对值的任一子进程。



wait和waitpid区别:

wait会使调用者阻塞,直到一个子进程终止,wait立即返回。wait返回子进程的ID。所以它总能了解那个子进程终止了。

而waitpid有选项可以选择不阻塞,并且可以选择它所要等待的进程。

waitpid提供3个wait没有的功能:

1 等待一个特定进程。

2 提供非阻塞选项。等待子进程但是不阻塞。

3 支持作业控制。



你可能感兴趣的:(异步,wait,waitpid)