【进程】Linux子进程回收--wait、waitpid

本文详细解析了wait和waitpid函数的使用方法及区别,包括如何通过status参数获取子进程的退出状态,waitpid函数的pid参数设置,以及options参数的作用。同时,对比了wait与waitpid在阻塞模式和指定回收子进程方面的不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 两个函数的原型如下:

 #include <sys/types.h>
 #include <sys/wait.h>

 pid_t wait(int *status);

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

可以通过status获取子进程的退出状态,如果不关心,可以将status置为NULL

 

对于waitpid函数,pid参数可以设置为以下任意值:

<-1 回收进程组id等于pid绝对值的任意子进程

-1  回收任意的子进程

0   回收进程组id等于调用进程的任意进程

>0 回收等于pid的子进程

 

options参数可以设置为以下值:

WNOHANG       

WUNTRACED     

WCONTINUED    

函数成功调用返回进程id,如果失败返回0或者-1

 

wait和waitpid的区别有以下几点:

1、wait会使调用者阻塞,即父进程会阻塞在wait调用上。而waitpid可选非阻塞方式。

2、当有子进程结束时,wait调用就返回。如果父进程产生了多个子进程,如果使用wait意味着父进程无法指定具体回收某一个子进程。waitpid参数中,可以指定回收某一个特定的子进程。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值