转载请注明作者和出处:https://blog.csdn.net/qq_28810395
运行平台: Windows 10
LeetCode官网:Fhttps://leetcode-cn.co

一、孤儿进程、僵尸进程、守护进程的概念

1.基本概念⭐⭐⭐⭐⭐

  1. 孤儿进程:当父进程退出后他的子进程还在运行,那么这些子进程就是孤儿进程。孤儿进程将被init进程所养,并由init进程对他们完成状态收集工作。
  2. 僵尸进程:当子进程退出后而父进程并未接收结束子进程(如调用waipid获取子进程的状态信息),那么子进程仍停留在系统中,这就是僵尸进程。
  3. 守护进程:是指在后台运行不受终端控制的进程(如输入、输出等)。网络服务大部分就是守护进程

2.如何创建守护进程⭐⭐

  1. 创建子进程,父进程推出:因为守护进程是在后台不受终端所控制的进程,父进程退出后控制台就以为该程序结束了,我们就可以在子进程进行自己的任务,同时用户仍可以在控制台输入指令,从而在形式上做到了与控制台脱离。
  2. 在子进程中创建新的会话(脱离控制终端):使用系统函数setid()来创建一个新的会话,并担任该会话组组长,摆脱原会话的控制==>摆脱原进程的控制==>摆脱原控制台的控制
  3. 改变当前目录为根目录:子进程继承父进程的目录信息,但进程运行时对当前目录下的文件系统不能卸载,这会有很多隐藏的麻烦,建议使用根目录作为当前目录,当然也可以使用其他目录。
  4. 重设文件权限掩码,关闭文件描述符:子进程还继承父进程的文件权限掩码,即屏蔽掉文件权限中的对应位。此时子进程需将其重置为0,即在此时有很大的权限,从而提高该守护进程灵活度。最后,关系从父进程继承的已经打开的文件描述符,如不进行关闭将造成浪费资源以及进程所有文件系统无法卸载等错误。

3.正确处理孤儿进程、僵尸进程的方法⭐⭐⭐⭐⭐

  1. 孤儿进程的处理:孤儿进程就是没有父进程的进程,它的处理就由进程为1 的Init进程负责,就像一个福利院一样,专门负责孤儿。当有孤儿进程需要处理的时候,系统就把孤儿进程的父进程设置为init,而init进程会循环的wait()它的已经退出的子进程。因此,孤儿进程不处理也不会有什么危害。
  2. 僵尸进程的处理:如果父进程一直不调用wait/waitpid函数接收子进程,那么子进程就一直保存在系统当中,占用系统资源,如果僵尸进程太多,那么就会导致系统空间爆满,无法创建新的进程,严重影响系统工作,为此僵尸进程需要好好处理。正确处理:系统规定,子进程退出后,父进程会自动收到SIGCHLD信号。因此我们需要父进程中重置signal函数。每当子进程退出,父进程就会收到SIGCHIL信号,故通过signal函数,重置信号响应函数。

嵌入式基础面八股文——孤儿进程、僵尸进程、守护进程的概念(3)相关推荐

  1. 守护进程和inetd守护进程

    一.守护进程介绍 守护进程是在后台运行且不与任何控制终端相关联的进程.通常由系统初始化脚本启动,当然也可以在shell提示符下用命令行启动,不过这种守护进程必须亲自脱离于控制终端的关联. 守护进程的启 ...

  2. linux守护进程编程,Linux守护进程的编程实现

    Linux 守护进程的编程方法 守护进程(Daemon)是执行在后台的一种特殊进程.它独立于控制终端而且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种非常实用的进程.Linux的大多数s ...

  3. php 如何守护进程_PHP 编写守护进程

    PHP 创建守护进程进程根据状态可以分为三种进程,守护进程,僵尸进程,孤儿进程.今天我们着重来分析下守护进程. 简介 守护进程 (daemon) 是一类在后台运行的特殊进程,用于执行特定的系统任务.很 ...

  4. python守护进程_Python实现守护进程

    考虑如下场景:你编写了一个python服务程序,并且在命令行下启动,而你的命令行会话又被终端所控制,python服务成了终端程序的一个子进程.因此如果你关闭了终端,这个命令行程序也会随之关闭. 要使你 ...

  5. java的守护进程与非守护进程

    java的守护进程与非守护进程 最近重新研究Java基础知识,发现以前太多知识知识略略带过了,比较说Java的线程机制,在Java中有两类线程: User Thread(用户线程).Daemon Th ...

  6. supervisor 守护多个进程_supervisor管理守护进程

    在Linux或者unix操作系统中,守护进程(Daemon)是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件. 由于在linux中,每个系统与用户进行交流的 ...

  7. Linux系统编程---11(会话,守护进程,创建守护进程)

    会话 创建会话 创建一个会话需要注意以下6点注意事项 调用进程不能是进程组组长,该进程变成新会话首进程 该进程成为一个新进程组的组长进程 需要root权限(nbuntu不需要) 新会话丢弃原有的控制终 ...

  8. linux守护进程写法_Linux守护进程的深入理解

    守护进程也称为精灵进程,是生存期较长的一种进程,常常在系统自举时启动,仅在系统关闭时终止.没有控制终端,仅仅在后台运行,Linux有很多守护进程执行日常事务活动.是不受终端控制的进程.想要脱离所有终端 ...

  9. 【孤儿进程】孤儿进程组、守护进程

    一.孤儿进程组 1. 孤儿进程的定义: 定义1:该进程组的每个成员的父进程要么是该组的成员,要么在其它会话中. 定义2:一个进程不是孤儿进程组的条件是--该组有一个进程,其父进程在属于同一会话的另一个 ...

  10. Linux多进程开发(三)进程创建之守护进程的学习

       之前发过一篇守护进程的文章,但是解析的不够详细,这次,详细来解释守护进程的一些概念和特性.   概念: 后台运行.没有控制端与之相连的进程.独立于控制终端,通常周期性的执行某种任务.    Wh ...

最新文章

  1. 状态模式(c++实现)
  2. 阿里舆情︱舆情热词分析架构简述(Demo学习)
  3. 从苹果店员到机器学习工程师:学习AI,我是这样起步的
  4. ASP.NET基础教程-利用javascript将光标定位到文本框
  5. linux 去掉csv文件第一行,使用PowerShell删除文本文件的第一行
  6. The Semantics of Constructors(拷贝构造函数之编译背后的行为)
  7. 黑客帝国canvas黑客帝国代码雨特效-A5源码
  8. linux进入根目录查找,如何进入Linux根目录??
  9. Qt5给Excel添加批注
  10. 数据分析师,如何向亲友解释自己的工作
  11. Error: watch task has to be a function(optionally generated by using gulp.parallel or gulp. series)
  12. html5网页录音和语音识别
  13. LINUX+Heartbeat 通过心跳实现双机高可用
  14. Java“白皮书”的关键术语
  15. amcharts _ 2.7.6 实现动态数据展现
  16. 叶武滨老师时间管理感悟分享4
  17. mac启动rabbitmq_Mac - RabbitMQ
  18. 2019云栖大会上,发生了哪些大事?
  19. ofo报废小黄车5元一辆:市值60亿美金的巨头为何全线溃败
  20. SSH远程控制win10

热门文章

  1. java JDBC入门及案例演示
  2. ubuntu安装cairo
  3. Vmware 安装 ghost 版 win 7
  4. 用户奖励体系有哪些反作弊的机制?
  5. [LeetCode] One Edit Distance 一个编辑距离
  6. memcached可视化客户端工具
  7. 第二章 jQuery选择器
  8. HBase源码分析:HTable put过程
  9. 嵌入式系统的接口类型有哪些
  10. 在Hadoop集群实施成功后再次格式化名称节点,datanode无法加入集群的处理办法...