SIGCHLD,在一个进程终止或者停止时,将SIGCHLD信号发送给其父进程,按系统默认将忽略此信号,如果父进程希望被告知其子系统的这种状态,则应捕捉此信号。(17)

SIGCHLD属于unix以及类unix系统的一种信号
产生原因 siginfo_t代码值
1,子进程已终止 CLD_EXITED
2,子进程异常终止(无core) CLD_KILLED
3,子进程异常终止(有core) CLD_DUMPED
4,被跟踪子进程以陷入 CLD_TRAPPED
5,子进程已停止 CLD_STOPED
5,停止的子进程已经继续 CLD_CONTINUED

在一个进程终止或者停止时,将SIGCHLD信号发送给其父进程。按系统默认将忽略此信号。如果父进程希望被告知其子系统的这种状态,则应捕捉此信号。信号的捕捉函数中通常调用wait函数以取得进程ID和其终止状态。

源代码如下:

#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>void catch(int sig)
{ printf("pid = %d\n", getpid());printf("sig = %d\n", sig);sleep(3);pid_t id = waitpid(-1, NULL, 0); //阻塞式等待printf("wait child is %d\n", getpid());
}/*void catch(int sig)
{ printf("pid = %d\n", getpid());printf("sig = %d\n", sig);sleep(3);pid_t ret = 0;while(ret = waitpid(-1,NULL,WNOHANG)<0){printf("wait suzzess! %d\n", ret);}
}*/int main()
{ signal(17, catch);pid_t id = fork();if(id == 0){ printf("I am a child, I am deading...\n");sleep(3);printf("child is quit,pid = %d\n", getpid());exit(0);}else{ while(1){ sleep(3);printf("I am father, pid = %d\n", getpid());}}return 0;
}

运行结果:

SIG_CHLD信号相关推荐

  1. 僵尸进程的生成以及几种避免方法

    #include <iostream> #include <unistd.h> #include <stdlib.h> using namespace std; i ...

  2. android双进程守护耗电,Android实现双进程守护

    做过android开发的人应该都知道应用会在系统资源匮乏的情况下被系统杀死!当后台的应用被系统回收之后,如何重新恢复它呢?网上对此问题有很多的讨论.这里先总结一下网上流传的各种解决方案,看看这些办法是 ...

  3. 线程和进程之间的联系----基本概念

    什么是线程? 在回答这个问题之前先得要回答进程, 传统操作系统上进程是 pcb,操作系统通过pcb控制程序运行:但是在 linux 下线程使用 pcb 实现调度,linux下 pcb 是线程,也叫轻量 ...

  4. poll和死锁_计算机基础知识

    转自: http://blog.csdn.net/qq_15437629/article/details/52388685 在这里只做备份 计算机网络 TCP/IP 模型 TCP/IP协议集的分层实施 ...

  5. Android 保持Service不被Kill掉的方法--双Service守护 Android实现双进程守护

    本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ↳Android.content.Context  ↳an ...

  6. 利用ptrace和memfd_create混淆程序名和参数

    <GDB调试之ptrace实现原理> <C语言程序调用栈:backtrace+backtrace_symbols+backtrace_symbols_fd> <strac ...

  7. 玩转ptrace (一)

    转自http://www.cnblogs.com/catch/p/3476280.html [本文翻译自这里: http://www.linuxjournal.com/article/6100?pag ...

  8. 保持Service不被Kill掉的方法--双Service守护 Android实现双进程守护 3

    第二部分: 做过android开发的人应该都知道应用会在系统资源匮乏的情况下被系统杀死!当后台的应用被系统回收之后,如何重新恢复它呢?网上对此问题有很多的讨论.这里先总结一下网上流传的各种解决方案,看 ...

  9. 程序员技术面常用知识点

    转自: http://blog.csdn.net/qq_15437629/article/details/52388685 在这里只做备份 计算机网络 TCP/IP 模型 TCP/IP协议集的分层实施 ...

最新文章

  1. html怎么压缩ttf,如何使用CSS包含.ttf字体?
  2. 永远不要让女生帮你寄领带
  3. UVA11624_Fire!
  4. python练习---购物车
  5. linux多线程计算pi,使用蒙特卡洛方法多线程计算pi值
  6. 在WEB开发的时候导入各种jar包
  7. batch size自适应log(1)
  8. 自然常数e相关数列收敛
  9. APISpace 空号检测API接口 免费好用
  10. Oracle12C日志出现error=904怎样解决
  11. 自定义QGraphicsItem
  12. 页面开发配色选择神器
  13. 英媒:“宫保鸡丁”有了官方译法
  14. 【贪玩巴斯】一文通过操作实例——学会 知网专业检索 2022年3月21日
  15. Shifting Letters
  16. 小公司真的能培养出来自己的人吗?员工真的成长过快是好事吗?
  17. Tomcat 配置详解/优化方案
  18. 2020上半年总结:纸上得来终觉浅,绝知此事要躬行
  19. file:///Users/xmg/Desktop/xiangmu~Bsbdejie/BaisibudejieTheSecondtime/BaisibudejieTheSecond/Baisib...
  20. 央视点名PC软件弹窗乱象 鲁大师等多家被点名

热门文章

  1. 利用人性弱点的互联网产品(一)贪婪
  2. Unity安卓 :launcherWARNING: The option setting ‘android.enableR8=false’
  3. 数据分组技术GroupBy
  4. 今日头条的排名算法_今日头条搜索seo排名怎么做 今日头条搜索排名规则
  5. PROFINET转 CANOPEN总线网关连接汇川变频器解决方案
  6. Lu尼玛音乐小课堂(一):一些基本的音乐常识
  7. draggable拖拽组件的使用
  8. 这款神器让3000多个失踪孩子回家,原来科技可以如此有情有义!
  9. R语言ggplot2可视化自定义图例(legend)示例点的大小实战
  10. 《CSDN周赛—第29期》竞赛糖豆问题PythonMatlab代码