while((pid = waitpid(-1, &stat, WNOHANG)) > 0)

需要写到信号处理函数中,假如有10个子进程

只要父进程能够收到最后一个信号,就能把前面丢失的所产生的僵尸进程回收完.

而父进程是能够收到最后一个信号的,就算父进程在子进程结束到第5个的时候,开始进行信号函数的处理.

如果由于处理时间过长,导致剩下5个也在处理函数执行的过程中结束掉.这时,由于信号处理机制会导致剩下5个传递的信号会被阻塞,当然由于该信号不排队

所以未决集只会有一个信号(当阻塞集相应位至1时,如果有相应信号到达,未决集至1,表示有未决的信号).至此,子进程已经全部结束,当信号函数执行完毕后,内核开放阻塞信号集,那么.之前被阻塞掉的那个信号传递进来.

接下来再次回收剩下的僵尸进程.

下面将给出代码,显示,信号函数的执行次数与回收次数的计数.就能看出区别

void hander(int n)
{static int i = 0;i++;printf("    i:%d\n", i);while (waitpid(0, NULL, WNOHANG) > 0){static int j = 0;j++;printf("j:%d\n", j);}}

  

waitpid(-1, &stat, WNOHANG)回收子进程,回收成功一个,返回子进程的pid,

如果WNOHANG被指定,将不再阻塞回收,此时的返回规则是.如果有子进程,但没有结束(没有变成僵尸进程),waitpid返回0,如果有僵尸进程,回收一个僵尸进程,返回僵尸进程pid,所以要用循环去处理.把僵尸进程回收完

转载于:https://www.cnblogs.com/c-slmax/p/5244425.html

对while((pid = waitpid(-1, stat, WNOHANG)) 0)不懂的地方,现在懂了相关推荐

  1. Docker 从入门到精通(0基础也能看懂的教程)

    今天给大家分享一篇小白也能看懂的Docker入门到精通学习教程,篇幅较长,但内容很干,值得认真看完! 1 容器简介 1.1 什么是 Linux 容器 1.2 容器不就是虚拟化吗 1.3 容器发展简史 ...

  2. python语言下,B站(bilibili)热门排行榜视频封面爬取程序V1.0 小白也能看懂,八十岁没牙老太太看完拿舌头都能爬封面!!

    由于工作需要,我需要对B站(www.bilibili.com,以下简称B站)的热门排行榜视频的封面经行截取,就是排行榜(www.bilibili.com/v/popular/rank/all)中的这些 ...

  3. kingcms企业(php) 9.0下载,[下载]地方门户 9.0(K9地方门户版)_KingCMS官方网站

    说明 KingCMS 9.0,首个引入云管理概念的内容管理系统. 核心(Kernel)+应用(Apps)+模板(Templates),支持在线扩展及升级. 本页面与购买页面的K9地方门户版是指同一款软 ...

  4. 火鸟门户v4.0 2019全能地方门户系统源码

    火鸟门户v4 2019全能地方门户系统源码,迄今为止综合性门户系统中,唯火鸟能做到一端发布,五端数据同步推送,为用户提供优秀的一站式地方门户系统.火鸟门户采用新的模板引擎,汲取了以前模板引擎的优点,并 ...

  5. Log4j又发新版2.17.0,只有彻底搞懂漏洞原因,才能以不变应万变,

    1 事件背景 经过一周时间的Log4j2 RCE事件的发酵,事情也变也越来越复杂和有趣,就连 Log4j 官方紧急发布了 2.15.0 版本之后没有过多久,又发声明说 2.15.0 版本也没有完全解决 ...

  6. 【紧急】Log4j又发新版2.17.0,只有彻底搞懂漏洞原因,才能以不变应万变

    1 事件背景 经过一周时间的Log4j2 RCE事件的发酵,事情也变也越来越复杂和有趣,就连 Log4j 官方紧急发布了 2.15.0 版本之后没有过多久,又发声明说 2.15.0 版本也没有完全解决 ...

  7. 史上最全八大排序讲解时间复杂度篇(0基础都能看懂)

    1.冒泡排序 冒泡排序的基本原理 对存放原始数组的数据,按照从前往后的方向进行多次扫描,每次扫描都称为一趟.当发现相邻两个数据的大小次序不符合时,即将这两个数据进行互换,如果从小大小排序,这时较小的数 ...

  8. 0基础都能看懂的SpringCloud,不容错过!

    一.前言 只有光头才能变强 认识我的朋友可能都知道我这阵子去实习啦,去的公司说是用SpringCloud(但我觉得使用的力度并不大啊~~)... 所以,这篇主要来讲讲SpringCloud的一些基础的 ...

  9. 【计算机网络复习之路】数据链路层(谢希仁第8版)0基础也能看懂 !!!

    专栏:计算机网络复习之路 好了,复习完了上面两章[第一章概述 | 第二章物理层],我们接着复习数据链路层. 目录 1  数据链路层概述 数据链路和帧 2  三个基本问题 封装成帧 透明传输 差错检测( ...

最新文章

  1. logrus学习笔记
  2. 利用VS+MFC+Opencv显示图像和视频所需添加类(CvvImage.h和CvvImage.cpp的源码)。
  3. 《Linux From Scratch》第二部分:准备构建 第五章:构建临时文件系统- 5.11. Tcl-8.6.3...
  4. react开发心路历程
  5. swift 函数篇章
  6. php调用接口接口代码无法执行,php调用c接口无错版介绍
  7. 小米知识图谱团队斩获CCKS 2020实体链指比赛冠军
  8. wifi共享大师电脑版_手机也能给电脑上网!WiFi热点已经out了,蓝牙USB线也能共享网络...
  9. 03 php,PHP 03 选择结构
  10. matlab中统计工具箱函数名大全
  11. 【渝粤题库】国家开放大学2021春2779植物病虫害防治基础题目
  12. Chrome扩展推荐
  13. X265源码下载地址
  14. Rainbow Tables
  15. oracle获取今天是周几,根据DateTime来获取当天是周几(已完结)
  16. 第4周收录188起融资,国内物流暴涨,国外40起过亿元大额融资 | 潜在周报
  17. centOS7.2.1511 bit64位 浏览器不能上网
  18. 赛博朋克宣言1993_赛博朋克2077和未来武器
  19. 人际交往与沟通技巧提升策略:如何说话恰到好处
  20. 学数据结构与算法推荐的书

热门文章

  1. c语言系统关键词有哪些,C语言的那些关键字
  2. PaddlePaddle︱开发文档中学习情感分类(CNN、LSTM、双向LSTM)、语义角色标注
  3. k8s使用glusterfs实现动态持久化存储
  4. 12c rac 实例无法启动之磁盘组空间耗尽
  5. mysql配置和管理(转载)
  6. 第十章 Linux   samba 共享软件
  7. webService发布和调用--Axis2
  8. 十二、流程控制之条件运算符
  9. linux下repair filesystem模式修复方法
  10. 修改Linux系统分区后挂载问题