7.wait和waitpid

版权声明:本博客为记录本人学习过程而开,内容大多从网上学习与整理所得,若侵权请告知! https://blog.csdn.net/Fly_as_tadpole/article/details/82765075

wait和waitpid:当一个进程正常或者异常终止的时候,内核就会向其父进程发送SIGCHLD信号,用于父进程来接受子进程的终止状态。

#include<sys/wait.h>

pid_t wait(int * statloc);

pid_t waitpid(pid_t pid ,int * statloc,int options);

wait和waitpid的主要区别是:

1)wait在等待子进程的终止返回信息的时候,也就是当所有的子进程都在运行的时候,进程将会阻塞而waitpid却可以使用第三个参数传入WNOHANG选项防止阻塞,立即返回。

2)waitpid可以等待某个特定进程而wait函数返回任意一个终止子进程的状态。

3)一般对于wait函数出错返回的唯一可能是调用进程没有子进程(函数调用被信号中断,也可能返回其他的错误)。而waitpid如果指定的进程或者进程组不存在。或者参数pid指定的进程不是调用进程的子进程,都可能会出错。


waitpid函数中 pid参数的作用:

1)pid == -1。等待任意子进程。此种情况下 等效于wait

2)pid>0 。等待特定的终止进程。

3)pid ==0 。等待组ID等于调用进程组ID的任意一个进程。

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

猜你喜欢

转载自blog.csdn.net/Fly_as_tadpole/article/details/82765075