/*SIGCHILD信号产生的3个条件:1.子进程结束2.子进程暂停了3.子进程继续运行都会给父进程发送该信号,父进程默认忽略该信号使用SIGCHLD信号解决僵尸进程的问题
*/
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<signal.h>
#include<wait.h>
void myfun(int num){printf("捕捉到的信号:%d\n",num);//回收子进程PCB的资源while(1){int ret = waitpid(-1,NULL,WNOHANG);if(ret > 0){printf("child die , pid = %d\n",ret);}else if(ret==0){//说明还有子进程break;}else if(ret == -1){//说明没有子进程break;}}
}
int main(){//提前设置好阻塞信号集,阻塞SIGCHLD,因为可能子进程很快结束,父进程还没有注册完捕捉sigset_t set;sigemptyset(&set);sigaddset(&set,SIGCHLD);sigprocmask(SIG_BLOCK,&set,NULL);pid_t pid;for(int i=0;i<20;i++){pid=fork();if(pid==0){break;}}if(pid>0){//父进程//捕捉子进程死亡时发送的SIGCHLD信号struct sigaction act;act.sa_flags = 0;act.sa_handler = myfun;sigemptyset(&act.sa_mask);sigaction(SIGCHLD,&act,NULL);//注册完信号捕捉后,解除阻塞sigprocmask(SIG_UNBLOCK,&set,NULL);while(1){printf("parent process pid = %d\n",getpid());sleep(2);}}else if(pid==0){//子进程printf("child process pid = %d\n",getpid());}return 0;
}

2.27sigchld信号相关推荐

  1. Linux shell 学习笔记(12)— linux 信号、后台运行脚本、作业控制、定时运行任务

    1. 处理信号 1.1 Linux 信号 常见的 Linux 信号如下表所示: 信号 值 描述 1 SIGHUP 挂起进程 2 SIGINT 终止进程 3 SIGQUIT 停止进程 9 SIGKILL ...

  2. Python分析离散心率信号(下)

    Python分析离散心率信号(下) 如何使用动态阈值,信号过滤和离群值检测来改善峰值检测. 一些理论和背景 到目前为止,一直在研究如何分析心率信号并从中提取最广泛使用的时域和频域度量.但是,使用的信号 ...

  3. Python分析离散心率信号(中)

    Python分析离散心率信号(中) 一些理论和背景 心率信号不仅包含有关心脏的信息,还包含有关呼吸,短期血压调节,体温调节和荷尔蒙血压调节(长期)的信息.也(尽管不总是始终如一)与精神努力相关联,这并 ...

  4. Python分析离散心率信号(上)

    Python分析离散心率信号(上) 一些理论和背景 心率包含许多有关信息.如果拥有心率传感器和一些数据,那么当然可以购买分析包或尝试一些可用的开源产品,但是并非所有产品都可以满足需求.也是这种情况.那 ...

  5. fpga数据位宽截取_FPGA信号截位策略研究

    在FPGA中,随着信号处理的层次加深,对信号进行乘.累加.滤波等运算后,可能输入时仅为8位位宽的信号会扩展成几十位位宽,位宽越宽,占用的硬件资源就越多,但位宽超过一定范围后,位宽的增宽并不会对处理精度 ...

  6. e.V4p.C0/index.php,php-fpm进程在Kubernetes中接收SIGKILL信号

    我已经在其中配置了Nginx,PHP和php-fpm创建了ubuntu docker镜像 . 当我在Docker实例上运行它时工作正常 . 但是当我在kubernetes中运行相同的图像时,php-f ...

  7. Linux io模型及函数调用,Linux 网络编程的5种IO模型:信号驱动IO模型

    Linux 网络编程的5种IO模型:信号驱动IO模型 背景 这一讲我们来看 信号驱动IO 模型. 介绍 情景引入: 在信号驱动IO模型中,当用户线程发起一个IO请求操作,会给对应的socket注册一个 ...

  8. io vivado 怎么查看ps_ZYNQ 7020学习笔记之PL侧普通信号中断PS的实验

    1.参考 UG585 网络笔记 2.理论知识 见中断部分 3.实验目的 练习使用PL侧的普通信号来中断PS处理器. 4.实验过程 建立工程,设置并初始化串口中断,在运行程序之后,如果串口接收到N(1- ...

  9. 用计算机采集卡检测压力传感器信号故障,计算机联网检测系统应用研究

    [摘要]计算机联网检测技术在机动车检测方面应用广泛.文章介绍计算机联网检测系统的类型及检测原理,探讨系统的维护.使用及故障诊断的技术与方法. [关键词]计算机联网机动车检测应用 计算机联网检测系统是电 ...

最新文章

  1. CentOS7.2 安装Docker
  2. 开关电源雷击浪涌整改_大佬多年经验总结,开关电源EMI整改策略
  3. python学习并发编程
  4. [pytorch、学习] - 9.2 微调
  5. 部署Chart应用并使用.net core读取Kubernetes中的configMap
  6. leetcode96. 不同的二叉搜索树 动归vs数学?
  7. c语言如何控制电脑串口,C语言直接驱动硬件实现PC机的串口操作
  8. 百度云域名解析如何添加? - [未完待续]
  9. 【ZZ】栈和堆的区别
  10. @ModelAttribute注解使用
  11. 数据包络分析法(DEA) R实现
  12. JMeter之接口测试脚本编写
  13. 2022年上半年软考报名常见问题及解答
  14. 洛谷-P1428 小鱼比可爱
  15. 百度网盘无限扩容技术,外面399,无论自己用还是用做引流都可以
  16. 在 Azure ML 上用 .NET 跑机器学习
  17. linux内核裁剪的具体过程和选择
  18. 博雅互动(静态网页)分享
  19. Android Activity 降低屏幕亮度 Android开发
  20. Html5 学习笔记 【PC固定布局】 实战7 风景欣赏 联系我们

热门文章

  1. Linux中hostname修改方法详解
  2. EM的意思是“Expectation Maximization
  3. 修改ubuntu hostname
  4. aspx 文件上传(简单)
  5. 机器学习入门-机器学习的不同类型
  6. 元气森林从0糖起家,在0蔗糖跌倒
  7. 一个思想超前的低代码平台主要实现思路
  8. 流行快餐 —— 破解快速时尚产品成功之道
  9. 用VB实现番茄工作法 miniTomato
  10. vue3+vant4 vant4主题色配置(简单快捷)