最近写代码遇到父进程fork出的子进程,父进程退出后子进程也退出。而要求的实现机制是,父进程启动子进程后,保证子进程能够继续运行,可以保证另一个进程启动能够和这个子进程进行通讯操作。

规避这个问题的方法是,通过signal找出是那个信号导致子进程自动退出的。通过signal函数可以取到,最后获取到的信号是SIGINT导致。查找相关资料:

2) SIGINT 程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出

因为父进程收到ctrl+c信号导致子进程也收到这个信号,子进程默认退出。

经验:fork进程时建议fork两次,如果一次的话经常会出现父进程退出子进程变成僵尸进程。代码如下:

if((pid=fork())==0)
{
if ((ipid=fork())==0)
{
debuging("System command:%s!\n", szCmd);
iRet = execl(szCmd, "wnet", NULL);
if(iRet < 0)
{
debuging("execl Failed,error = %d\n", errno);
}
}
debuging("Children Pid\n");
_exit(0);

}
else if (pid > 0)
{
waitpid(pid, NULL, 0);
debuging("Father Pid\n");
}

父进程退出,保证子进程交由init。相关推荐

  1. linux父进程发出退出信号,为什么prctl没有如小弟我所预期的设置一个父进程退出发给子进程信号...

    为什么prctl没有如我所预期的设置一个父进程退出发给子进程信号? 我写了一个小程序,在fork出的子进程中使用prctl,设置父进程退出后自动发送给子进程退出信号. #include #includ ...

  2. 父进程产生一系列子进程,每个子进程打印自己的PID然后退出,父进程最后打印PID

    #include<stdio.h> #include<stdlib.h> #include <unistd.h> //父进程产生一系列子进程,每个子进程打印自己的P ...

  3. php修改父进程变量,shell子进程修改父进程的环境变量值

    shell子进程修改父进程的环境变量值 脚本中的环境变量通过 export 导出,脚本中调用其他脚本使用这个变量 这里有两个脚本程序 hello 和 hello1 hello 脚本代码 #!/bin/ ...

  4. python主进程退出时子进程也退出_主进程被杀死时,如何保证子进程同时退出,而不变为孤儿进程(三)...

    之前两篇文章讨论了进程意外退出时,如何杀死子进程,这节我们研究下在使用进程池multiprocessing.Pool时,如何保证主进程意外退出,进程池中的worker进程同时退出,不产生孤儿进程.如果 ...

  5. 主进程退出后子进程还会存在吗?_[docker]从一个实例,一窥docker进程管理

    在Docker中,进程管理的基础是Linux内核的PID命名空间技术.在不同的PID命名空间下,可以有相同的PID. Linux内核为所有的PID命名空间维护了一个树状的数据结构,最顶层是系统初始化时 ...

  6. linux父进程中显示子进程pid,请教linux下c语言函数fork父进程打印子进程的PID

    请教linux下c语言函数fork父进程打印子进程的PID 关注:296  答案:2  信息版本:手机版 解决时间 2019-01-14 04:55 雨不眠的下 2019-01-13 12:23 用于 ...

  7. 主进程退出后子进程还会存在吗?_【干货】Linux进程模型 全解

    关注.星标公众号,直达精彩内容 ID:嵌入式情报局 作者:情报小哥 1进程与程序 01 什么是进程 ?  什么是进程 ? 进程(process)是具有独立功能的程序单次运行,是操作系统进行资源分配的基 ...

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

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

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

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

最新文章

  1. 安装mysql 10055_Can’t connect to MySQL server on ‘localhost’ (10055) | 学步园
  2. linux shell 算术运算{expr、bc、dc、(( ))和[ ]}
  3. android的横竖屏切换,Android横竖屏切换 初步探究
  4. 初学者的困惑:OOP与一般编程的区别
  5. 改进合作 Git 工作流:自动提取、合并提交
  6. 1ke android逆向助手_android: 使用android逆向助手反编译APK
  7. html5跨域 postmessage,html5跨域通讯之postMessage的用法总结
  8. html简单用户登录界面_简单实现 nginx 用户登录认证
  9. some ubuntu shell commands
  10. ASP.NET网站限制访问频率
  11. 微服务框架和工具大全
  12. 机器学习_回归和分类的区别
  13. 智慧农业IOT-onenet平台简单介绍
  14. vue 高德地图使用热力图
  15. 基于改进的CASA模型反演NPP
  16. 聊聊UI的扁平化设计趋势与拟物化设计
  17. 财务管理系统-数据库模块
  18. MATLAB--读取广播星历的导航文件
  19. TP-LINK三层网管交换机通过console接口完成复位操作
  20. 2019年1月22日 总结

热门文章

  1. Windows10_如何修改用户文件夹下的中文用户文件夹名
  2. 一些电子资源的分享(1)
  3. 那些一秒搞定微软公司Excel的神操作(上)!
  4. VUE 项目更新部署时,浏览器页面缓存问题
  5. 请教PCI卡的DMA方式问题
  6. 基于pion生态的SFU实时音视频发布服务(一)
  7. python爬虫系列(一):爬虫简介
  8. SAP Marketing Cloud 功能概述(三)
  9. 关于音视频直播技术的总结
  10. h5手机端或PC端利用高德地图获取当前定位位置