wait和waitpid的区别

函数原型:

#include <sys/types.h>
#include <sys.wait.h>
pid_t wait(int *status);
pid_t waitpid(pid_t pid,int *status,int options);

概括:wait函数是waitpid函数的包装。
1.当pid = -1,等待任何一个子进程退出,和wait函数作用一样。
2.当pid > 0,只等待进程ID等于pid的子进程结束,只要是指定的子进程还没有结束,就不会退出。
3.当pid = 0,等待同一进程组中的子进程,如果子进程加入了别的进程组,将不予理睬。
4.当pid < -1时,等待一个进程组中的任何和子进程,进程组的ID等于pid的绝对值。
5.如果设置第三个参数options为WNOHANG,而且在调用中没有发现已经退出的子进程可以收集,则会返回0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
waitwaitpid是两个用于等待子进程结束的函数,它们的本质作用是相同的。但是waitpid相比wait多了两个参数,使得编程更加灵活。具体区别如下: 1. wait只能等待任意的子进程结束,而waitpid可以等待一个特定的子进程结束。\[1\] 2. wait函数会阻塞父进程,直到等到子进程的退出才停止阻塞,而waitpid提供了一种非阻塞方式的等待。通过设置第三个参数为WNOHANG,当子进程没有结束时,waitpid会立即返回0,不会等待。\[2\] 3. waitpid支持作业控制,提供了用于检查返回状态的宏。这些宏可以解析status指针中保存的子进程的状态。\[2\] 4. waitpid的option常量包括WNOHANG和WUNTRACED。WNOHANG表示waitpid不会阻塞,如果指定的pid并未结束,直接返回。WUNTRACED表示如果子进程进入暂停执行情况,则立即返回,但不理会结束状态。\[3\] 综上所述,waitpid相比wait具有更多的功能和灵活性,可以满足更多特定的需求。 #### 引用[.reference_title] - *1* *3* [waitwaitpid区别和使用](https://blog.csdn.net/qq_41181857/article/details/106972668)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [waitwaitpid区别](https://blog.csdn.net/qq_48739372/article/details/127656002)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值