7.wait和waitpid

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绝对值的任一子进程。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值