当父进程调用wait和waitpid函数来获取子进程终止状态时,一般会有以下3种情况:
1、如果其所有子进程都还在运行,则阻塞;
2、如果一个子进程已终止,正等待父进程获取其终止状态,则取得该子进程的终止状态立即返回;
3、如果没有任何子进程,则立即终止返回。
如果父进程由于接收到SIGCHLD信号(当一个进程正常或异常终止时),内核就向其父进程发送SIGCHLD信号)而调用wait,wait会立即返回。

函数原型如下:


两个函数的区别如下:
1、在一个子进程终止前,wait使其调用者阻塞,而waitpid有一选项(int options),可使调用者不阻塞;
2、waitpid并不等待在其调用之后的第一个终止子进程,它有若干个选项,可以控制它所等待的进程。
对于waitpid函数中pid参数的作用解释如下:

waitpid函数返回终止子进程的ID,并将该子进程的终止状态存放在由statloc指向的存储单元中。
3、对于wait,其唯一的出错是调用进程没有子进程;
但是对于waitpid,如果指定进程或进程组不存在,或者参数pid指定的进程不是调用进程的子进程,都可能出错。

获取子进程终止状态:wait和waitpid相关推荐

  1. 使用wait函数获取子进程终止状态

    1 wait/waitpid介绍 当一个进程正常或异常终止时,内核会向其父进程发送SIGCHLD信号.因为子进程终止是异步的,所以信号发送也是异步的.父进程可以选择忽略该信号,或者提供信号处理函数进行 ...

  2. UNIX环境编程学习笔记(21)——进程管理之获取进程终止状态的 wait 和 waitpid 函数...

    lienhua34 2014-10-12 当一个进程正常或者异常终止时,内核就向其父进程发送 SIGCHLD信号.父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用的函数(信号处理程序).对于 ...

  3. wait获取子进程退出状态 WIFEXITED和WIFSIGNALED用法

    可以使用wait函数传出参数status来保存进程的退出状态. 常用宏函数分为日如下几组: 1. WIFEXITED(status) 若此值为非0 表明进程正常结束. 若上宏为真,此时可通过WEXIT ...

  4. Linux进程控制:wait获取子进程退出状态 WIFEXITED和WIFSIGNALED用法

    可以使用wait函数传出参数status来保存进程的退出状态. 常用宏函数分为日如下几组: 1. WIFEXITED(status) 若此值为非0 表明进程正常结束. 若上宏为真,此时可通过WEXIT ...

  5. Linux进程3:父进程等待(wait,waitpid)子进程退出并收集子进程退出状态,僵尸进程

    父进程等待(wait,waitpid)子进程退出并收集子进程退出状态 1.父进程为什么要等待子进程退出? 创建子进程目的:------干活 我们要知道干活结束没. 子进程退出状态不被收集,变成僵尸进程 ...

  6. linux操作系统之子进程回收函数wait和waitpid函数小结

    一个进程在终止时会关闭所有的文件描述符,释放用户空间分配的内存,但是它的PCB还保留着,内核在其中还保留着进程的一些信息:如果正常终止,则保留着退出状态:如果异常终止则保存着导致进程种植的信号. 在父 ...

  7. 【Linux 内核】进程管理 ( Linux 中进程的 CPU 资源调度 | 进程生命周期 | 创建状态 | 就绪状态 | 执行状态 | 阻塞状态 | 终止状态 | 进程生命周期之间的转换 )

    文章目录 一.Linux 中进程的 CPU 资源调度 二.进程生命周期 三.进程生命周期之间的转换 一.Linux 中进程的 CPU 资源调度 Linux 操作系统 是 多任务系统 , 可以 同时运行 ...

  8. Android编程获取网络连接状态及调用网络配置界面

    获取网络连接状态 随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. Android平台提供了ConnectivityMan ...

  9. Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面

    http://www.mobiletuts.me 获取网络连接状态 随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. An ...

最新文章

  1. Iterative error correction of long sequencing reads maximizes accuracy and improves contig assembly
  2. 让asp.net默认的上传组件支持进度条反映(转)
  3. 【深度学习】图片分类CNN模板
  4. swoole redis mysql_教你使用swoole监听redis数据
  5. k1658停运_最新通知!福州这些列车停运!
  6. Java番外篇2——jdk8新特性
  7. java作业 大蛇丸的召唤术 万蛇罗之阵 类与对象的演练
  8. Upload-Labs(11-15)
  9. IOS开发一些资源收集
  10. 8-7/8 java/redis 客服端
  11. linux SU不用密码,linux设置su和sudo为不需要密码
  12. 编程常见错误——循环中进行有符号数和无符号数的比较
  13. [渝粤教育] 中国地质大学 中外美术史 复习题 (2)
  14. UDS - 诊断协议和协议栈介绍
  15. 深度学习框架_Caffe_Caffe框架入门简介
  16. 硬件设备计算存储及数据交互杂谈
  17. Java中IDEA报错 “cannot access xxx“的解决办法
  18. 虚拟打印机直播软件 无人直播互动打印系统 含搭建教程
  19. GRU和LSTM的单元结构
  20. cisco路由器启动过程

热门文章

  1. 网络层的拥塞控制与服务质量
  2. 计算机3d开机号162期,彩吧福彩3D第162期试机号后分析总汇
  3. php保存word没背景图,为什么word文档明明保存了却不见了
  4. 卖家盒子提示服务器正在维护,户户通提示位置信息改变的解决办法
  5. 人生经典定律[收藏]
  6. 强化学习Reinforcement Learning概念理解篇(一)
  7. matlab高斯正反算程序6,基于matlab的高斯投影正反算与相邻带坐标换算程序设计...
  8. 给hexo主题添加背景及更改字体颜色(next的Mist主题)
  9. 3.acwing3373. 进制转换
  10. 文献阅读—GAIN:Missing Data Imputation using Generative Adversarial Nets