示例代码:

 1 void str_cli(FILE *fp, int sockfd)
 2 {
 3     pid_t pid;
 4     char sendline[MAXLINE], recvline[MAXLINE];
 5     if ((pid = fork()) == 0) {
 6         while (readline(sockfd, recvline, MAXLINE) > 0)
 7             fputs(recvline, stdout);
 8         kill(getpid(), SIGTERM);   //A
 9         exit(0);
10     }
11     while(fgets(sendline, MAXLINE, fp) != NULL)
12         write(sockfd, sendline, strlen(sendline));
13     shutdown(sockfd, SHUT_WR);
14     pause();
15     return ;
16 }

问题描述:上述为客户端程序,如果父进程在子进程之前意外死亡,而子进程随后从套接字读到了EOF,则会存在如下问题:

由于父进程提前死亡,对于子进程而言,直接父亲进程死亡,其成为孤儿进程,在Linux内核中,这样的孤儿进程将由init进程收养。子进程读到EOF后,代码A将会执行,子进程向其父进程,即init进程发送SIGTERM信号。如果子进程具有超级用户权限,则系统将会允许其向init发送终止信号。执行结果为:

root@ubuntu:/home/test# ./signal-test
root@ubuntu:/home/test# dmesg
[20409.660653] init: Re-executing /sbin/init

转载于:https://www.cnblogs.com/scu-cjx/p/7728867.html

客户端父进程提前死亡相关推荐

  1. 子进程及时知道父进程已经退出的最简单方案

    [精彩] 子进程及时知道父进程已经退出的最简单方案? http://www.chinaunix.net 作者:yuonunix  发表于:2003-10-31 10:14:14 [发表评论] [查看原 ...

  2. 关于进程(PCB | 父进程 | 子进程 | fork深层探讨 |僵尸进程与孤儿进程)

    文章目录 一.进程与PCB 1. 进程的概念: 2. 什么是PCB task_struct task_ struct内容分类 4. 查看进程 5. 进程概念的加深 二.父进程与子进程 1. 通过系统调 ...

  3. linux 查看进程死亡原因,【进程管理】进程的死亡

    ARM Linux 源码分析系列文章基于 Linux 2.6.22 讲解,转载请标明原处! 一个进程可以使用exit系统调用来结束自己并进入僵死状态.他最后在内核中执行到的函数为sys_exit(). ...

  4. java父进程获取子进程异常_如何在perl的父进程中获取死亡的子进程的PID?

    您可以将父项及其子项放在自己的进程组中,并通过向父项发送信号来终止整个系列 . 根据您的问题的性质,您可能愿意离开(麦克马纳斯先生!),并且因为每次尝试 kill 对已经死亡的子进程感到失败 . 如果 ...

  5. Linux中父进程为何要苦苦地知道子进程的死亡原因?

    白发人送黑发人 一个普遍的常识是,在Linux里面总是"白发人送黑发人",子进程死亡,父进程透过wait()等待子进程死亡,并清理子进程僵尸,当然父进程也可以因此而获得子进程的死亡 ...

  6. fork之子进程随父进程死亡prctl

    利用prctl的PR_SET_PDEATHSIG属性设置父进程死亡时,发送给子进程的信号. int pid; pid = fork() if (pid == 0) {//子进程 //设置父进程死亡时自 ...

  7. linux子进程父进程例子,linux 子进程访问父进程

    问题分析 ECS Linux 系统下 Apache 的默认工作模式是 prefork MPM,使用多个子进程,每个子进程只有一个线程.每个进程在某个确定的时间只能维持一个连接,效率高,但内存占用量比较 ...

  8. 从入门到入土:基于C语言实现并发Web服务器|父进程子进程|代码展示

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  9. 问题:子进程父进程哪个先执行:【转】关于 fork 和父子进程的理解

    2019独角兽企业重金招聘Python工程师标准>>> 关于 fork 和父子进程的理解   (http://blog.163.com/kingore@126/blog/static ...

最新文章

  1. 7-2 然后是几点 (C语言)
  2. python窗口动态实时显示时间_苏州2.8寸串口屏厂家:切管机触摸屏实时动态显示切割过程...
  3. 前端也要学系列:设计模式之装饰者模式
  4. 【Android 高性能音频】AAudio 状态机 ( 创建 | 打开 Open | 开始 Started | 暂停 Paused | 刷写 Flushed | 停止 Stopped | 关闭 )
  5. Python基础教程学习笔记:第二章 列表和元组
  6. Spring 注解 @Resource和@Autowired
  7. mysql in优化_MySQL 探秘: 1 整体架构
  8. Python入门基础篇(四)字符串的常用操作,全面易懂,简单实用!!!
  9. Android 启动APP时黑屏白屏的三个解决方案
  10. 高等代数 北大版 Page 17 推论 证明
  11. 和计算机与设计相关的,计算机设计和类论文参考文献 计算机设计和参考文献有哪些...
  12. 动态规划之详细分析0-1背包问题
  13. Dictionary:MAC字典最简解决方案
  14. 政府推荐:房屋租赁合同电子版模板出租房个人住房商业租房Word协议书范本
  15. SDUT——2021级-JAVA02 基础语法1--标识符、常量与变量、数据类型、运算符与表达式
  16. DevC++ 调试的时候闪退解决办法
  17. 华为手机浏览器 onclick失灵的问题
  18. 系统设计基础 负载均衡
  19. Hive入门级教程(详细)
  20. 【嵌入式芯片】GPU,CPU,SOC,DSP,FPGA,ASIC,MCU,MPU,GPP,ECU等简介

热门文章

  1. python写一个类600行代码_带你领略算法的魅力,一个600行代码的分词功能实现(一)...
  2. 文件管理搜不到Android 里的文件,Android:在原始文件夹中添加文件后窗口找不到内容容器视图...
  3. 门槛回归模型_门限回归汇总与空间门槛回归模型简介
  4. java 多个ssl证书_java – 将多个SSL证书固定添加到Android KeyStore不起作用. (来自资源文件)...
  5. jQuery的创建对象,动态添加、修改、删除属性和方法
  6. linux大页内存 grub,Centos7.2使用1G大页面内存
  7. 电芯容量在前期循环中容量增加_安普瑞斯王岑博士:安普瑞斯的硅负极材料在高能量密度电池中的应用进展...
  8. c 语言 二进制 十进制,C 语言实例 - 二进制与十进制相互转换
  9. (补)20210623:力扣第246周周赛(下)
  10. c语言可作为程序分支的表达式,[计算机软件及应用]C语言程序设计4--李2012.ppt