Linux——wait回收子进程、回收子进程退出值和异常终止信号,waitpid回收子进程/回收多个子进程,两个回收函数的总结

一、wait回收子进程

一个进程在终止时会关闭所有文件描述符,释放在用户空间分配的内存,==但它的PCB还保留着,内核在其中保存了一些信息:==如果是正常终止则保存着退出状态;如果是异常终止则保存着导致改进程终止的信号是哪个,这个进程的父进程可以调用wait或waitpid获取这些信号,然后彻底清除掉这个进程。
进程的退出状态可以在shell中用特殊变量$?查看,因为shell是它的父进程,当它终止时,shell调用wait或waitpid得到它的退出状态同时彻底清除掉这个进程

父进程调用wait函数可以回收子进程终止信息,该函数有三个功能:

  1. 阻塞等待子进程退出(一定要等到子进程死了才走)
  2. 回收子进程残留资源
  3. 获取子进程结束状态(退出原因)

pid_t wait(int *status),status是一个返回参数,成功返回回收子进程的进程id,失败返回-1
部分代码一览:
在这里插入图片描述
只有子进程死亡了父进程才会返回

  • 返回状态status的用法:
    在这里插入图片描述

二、回收子进程退出值和异常终止信号

使用wait函数传出参数status来保存进程的退出状态,借助宏函数来进一步判断进程终止的具体原因*
在这里插入图片描述
WIFEXITED\WEXITSTATUS\WTERMSIG在这里插入图片描述

三、waitpid回收子进程

在这里插入图片描述
1,pid可以指定某一个进程进行回收
2,status可以获取子进程的退出状态和异常终止信号
3,options用来设置非阻塞WNOHANG
在这里插入图片描述
特殊参数和返回情况:·
在这里插入图片描述

四、回收多个子进程

用while循环实现

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值