信号之SIGCHLD
SIGCHLD信号是子进程结束时发出来的信号,可用于在程序中捕获子进程结束的信号然后用wait函数将子进程资源回收。 优点:不会使父进程一直阻塞在wait函数处。

#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>void signhander(int signo) {printf("grep pid:%d, signo:%d\n",getpid(), signo);wait(0);return;
}int main(void)
{pid_t pid;if(signal(SIGCHLD, signhander) == SIG_ERR) {perror("signal error");}if ((pid = fork()) < 0) {perror("fork fail");} else if (pid > 0) { //父进程for(int i = 0; i<50; i++) {printf("father pid: %d, %d.\n", getpid(), i);sleep(1);}} else {//子进程for(int j = 0; j < 10; j++) {printf("child pid: %d, %d.\n", getpid(), j);sleep(1);}}return 0;
}

root@spark# ./chld_sig
father pid: 5918, 0.
child pid: 5919, 0.
father pid: 5918, 1.
child pid: 5919, 1.
father pid: 5918, 2.
child pid: 5919, 2.
father pid: 5918, 3.
child pid: 5919, 3.
father pid: 5918, 4.
child pid: 5919, 4.
father pid: 5918, 5.
child pid: 5919, 5.
father pid: 5918, 6.
child pid: 5919, 6.
father pid: 5918, 7.
child pid: 5919, 7.
father pid: 5918, 8.
child pid: 5919, 8.
father pid: 5918, 9.
child pid: 5919, 9.
father pid: 5918, 10.
grep pid:5918, signo:17
father pid: 5918, 11.
father pid: 5918, 12.
father pid: 5918, 13.
father pid: 5918, 14.
father pid: 5918, 15.
father pid: 5918, 16.
father pid: 5918, 17.
father pid: 5918, 18.
father pid: 5918, 19.
father pid: 5918, 20.
father pid: 5918, 21.
father pid: 5918, 22.
father pid: 5918, 23.
father pid: 5918, 24.
father pid: 5918, 25.
father pid: 5918, 26.
father pid: 5918, 27.

信号之SIGCHLD相关推荐

  1. Day53 Linux setitimer函数 信号集操作函数 信号捕捉 SIGCHLD信号

    目录 setitimer函数 信号集操作函数 1.信号集设定 2.igprocmask函数 3.sigpending函数 信号捕捉 1.signal函数 2.sigaction函数 SIGCHLD信号 ...

  2. 【信号】SIGCHLD信号

    一.SIGCHLD信号 1. SIGCHLD简介 SIGCHLD的产生条件: 子进程终止 子进程接收到SIGSTOP信号停止时 子进程处于停止状态,接收到SIGCONT后唤醒 注意:通过signal( ...

  3. 11_信号SIGINT,SIGCHLD

    11_信号SIGINT,SIGCHLD 文章目录 11_信号SIGINT,SIGCHLD 1.SIGINT 举例 1.1(signal和信号^C) 1.2(运行./mykill 进程号 快捷键说明号) ...

  4. Linux信号:SIGCHLD信号和僵尸进程

    1. SIGCHLD信号产生条件: (1)子进程终止: (2)子进程收到SIGSTOP信号被暂停: (3)子进程处于暂停状态,收到SIGCONT信号被唤醒. 2. 捕捉SIGCHLD,避免僵尸进程: ...

  5. Linux--信号signal、父子进程、SIGCHLD信号相关命令

    目录 1.概念: 2.信号的存储位置: 3.常见的信号的值以及对应的功能说明: 4.信号的值在系统源码中的定义: 5.响应方式: 6.改变信号的相应方式: (1)设置信号的响应方式: (2)默认:SI ...

  6. [ Linux ] 可重入函数,volatile 关键字,SIGCHLD信号

    目录 1.可重入函数 2.volatile 2.1从信号角度理解volatile的作用 2.2volatile的作用 3.SIGCHLD信号 3.1SIGCHLD信号的验证 1.可重入函数 在数据结构 ...

  7. Linux解决僵尸进程的几种方式,SIGCHLD信号设置SIG_IGN处理方式等

    目录 僵尸进程 解决方式 父进程阻塞调用wait() 父进程非阻塞调用waitpid() SIGCHLD信号 SIG_IGN信号 僵尸进程 我们知道linux下进程有种状态叫做僵尸状态; 原因是父进程 ...

  8. 【Linux】SIGCHLD信号解决僵尸进程问题

    1. 基本信息 SIGCHLD信号产生的条件: 子进程终止时 子进程接收到SIGSTOP信号停止时 子进程处在停止态,接受到SIGCONT后唤醒时 以上三种条件都会给父进程发送SIGCHLD信号,父进 ...

  9. c语言信号机制以及中断

    用户态到内核态切换途径: 1:系统调用        2:中断 3:异常 中断类型分为如下两大类: 一.强迫性中断:正在运行的程序所不期望的,来自硬件故障或外部请求. 1.I/O 中断:来自外部设备通 ...

最新文章

  1. 1小时学会:最简单的iOS直播推流(十一)spspps和AudioSpecificConfig介绍(完结)
  2. 一天搞定HTML----标签类型与类型转换05
  3. 完成聊天室的私聊功能
  4. web前端网页开发离不开的三要素:HTML、CSS、JavaScript
  5. stylegan2-pytorch 自己训练的model 出错
  6. 赶个项目,博客稍后更新
  7. 【运筹学】表上作业法 ( 运输规划问题最优解分析 | 退化与非退化 )
  8. mariadb mysql.sock_数据库缺少mysql.sock文件的解决办法
  9. NAS存储文件权限的设置方法
  10. 2019小程序发展趋势
  11. 【21SR】Designing a Practical Degradation Model for Deep BlindImage Super-Resolution
  12. python之re模块详解
  13. 【从C开始学编程】之(序言)大家为什么要学C语言以及C语言好不好学?
  14. 怎么拆分pdf文件为一张一张
  15. BD视觉算法工程师笔试题
  16. 万应案例精选|栽好梧桐树,引来凤凰栖,万应工场成产业园区智慧升级领跑“利器”
  17. 基于51单片机的红外非接触测温仪阈值报警方案原理图设计
  18. 就连外行人都能看懂的SpringCloud!还说你不会?
  19. HDU2186 悼念512汶川大地震遇难同胞——一定要记住我爱你【水题】
  20. C语言:scandir函数详解

热门文章

  1. eclipse注释里面中文字大小不一致解决办法。eclipse注释里面数字后中文字号变大解决办法。eclipse注释里面符号后字体变小的方法。调成中欧字符仍然没用解决方案
  2. windows cmd命令进入文件夹目录
  3. 油田设备租赁行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  4. 使用笔记本连接显示提示:输入信号超出有效范围,将设置改为1680*1050-60hz
  5. 数据结构(一):入门
  6. jupyter KeyError Unhandled error ‘pip uninstall psutil‘, manually remove
  7. WebAR|前端开发者开发WebAR资源最全大汇总
  8. Python最简单的sklearn库安装教程
  9. 笔记本访问台式机的共享磁盘
  10. 【错误记录】Android 单元测试报错 ( ExampleUnitTest.kt: (3, 12): Unresolved reference: junit / Test / assertEqu )