博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多进程问题
阅读量:5820 次
发布时间:2019-06-18

本文共 488 字,大约阅读时间需要 1 分钟。

一、概述

  孤儿进程:父进程退出,而它的子进程仍在运行,那么这些子进程将成为孤儿进程,孤儿进程将被init进程(进程id)为收养,并由init进程对它们完成状态的收集工作

  僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中,这种进程称之为僵尸进程

二、如何避免出现僵尸进程

  • 通过signal(SIGCHLD, SIG_IGN)通知内核对子进程的结束不关心,由内核回收
  • 通过SIGCHLD的注册函数来处理信号,如果一下子很多信号发出,那么会有丢失信号的问题,因为内核发信号不排队....
  • 孤儿进程的方式,通过fork setsid实现

三、Daemon守护进程

  1. fork子进程、然后父进程退出,这已经构成了基本的daemon,但子进程还在父进程的回话里面
  2. 子进程调用setsid,使子进程成为新的会话组长,但新的会话组长可申请控制终端
  3. 再次fork一个子孙进程,干掉子进程,保留孙子进程
  4. 切换工作目录,关闭stdin\stdout\stderr的句柄,umask  

转载地址:http://gmzdx.baihongyu.com/

你可能感兴趣的文章
Linux - 硬链接(Hard Links)和符号链接(Symbolic Links)
查看>>
cron计划任务
查看>>
菜鸟学习linux笔记(一)
查看>>
用git下载android的源代码
查看>>
ab压力测试默认2万并发,突破2万并发测试。
查看>>
【web开发】☆★之利用POI操作Excel表格系列教程【1】创建工作簙
查看>>
基于appium的安卓自动化测试环境搭建
查看>>
Windows Azure 自动化配置介绍
查看>>
Zabbix3.0 监控Windows Client
查看>>
ArrayList和LinkedList的几种循环遍历方式及性能对比分析
查看>>
Linux下邮件发送 sendEmail介绍
查看>>
android之首选项相关 Preferences(一) (转)
查看>>
Object_C 中的通知 iOS
查看>>
linux下安装redis,启动,停止,设置密码
查看>>
NT6 HDD Installer 使用教程
查看>>
披着微电影外衣的广告 在扼杀微电影产业
查看>>
mysql update语句
查看>>
多线程设计模式——概述——笔记
查看>>
Juniper实现HA
查看>>
Hive 简单SQL
查看>>