首页 > 系统相关 >孤儿进程,守护进程,僵尸进程

孤儿进程,守护进程,僵尸进程

时间:2023-11-26 15:31:26浏览次数:36  
标签:退出 创建 孤儿 进程 守护 僵尸

@TOC

前言

当谈到进程管理时,了解以下进程是很重要的:僵尸进程(Zombie Process),孤儿进程(Orphan Process),守护进程(Daemon Process)。


一、守护进程

Daemon 守护进程, 是 Linux 中的后台服务进程,通常独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。

创建守护进程最关键的是 调用 setsid 函数创建一个新的 Session,并成为 Session Leader.

创建守护进程的流程可以分为以下几个步骤:

  1. 创建子进程,父进程退出。
  2. 调用 setsid 函数在子进程中创建新对话。 (子进程独立出来,脱离控制)
  3. 改变当前目录

二、孤儿进程

孤儿进程是指其父进程已经退出或终止,而它的子进程尚未退出或终止的进程。在这种情况下,孤儿进程将被init进程(进程ID为1)接管,成为init进程的子进程。

init进程对孤儿进程进行回收处理,以释放它们占用的系统资源,并确保它们的退出状态被正确处理。这样可以防止孤儿进程变成僵尸进程。

孤儿进程通常是由于父进程意外终止或父进程没有正确等待子进程的退出状态而产生。

三、僵尸进程

  1. 什么是僵尸进程?

僵尸进程 是一个进程 fork( ) 创建子进程,当子进程退出时,父进程未使用 wait 或 waitpid 函数回收子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程叫做僵死进程。

  1. 僵尸进程的危害

在进程退出的时候,内核释放该进程的所有资源,包括打开的文件,占用的内存等。但是仍然保留一定的信息(pid, 进程状态等),直父进程使用 wait / waitpid 来回收进程时才释放。

如果不回收进程,那么信息就一直未被释放,进程号一直会被占用。而系统的进程号是一定的,大量的僵尸进程就会导致没有进程号来创建新进程。

  1. 如何清理僵尸进程?

当系统中出现了僵尸进程时,我们是无法通过 kill 命令把它清除掉的。kill -9 pid 但是我们可以杀死它的父进程,让它变成孤儿进程,并进一步被系统中管理孤儿进程的进程收养并清理。


总结

这些概念在进程管理中具有重要意义。了解僵尸进程、孤儿进程和守护进程的特点和处理方法有助于编写更健壮的多进程应用和系统。

标签:退出,创建,孤儿,进程,守护,僵尸
From: https://blog.51cto.com/u_16159289/8570915

相关文章

  • 5.7 Windows驱动开发:取进程模块函数地址
    在笔者上一篇文章《内核取应用层模块基地址》中简单为大家介绍了如何通过遍历PLIST_ENTRY32链表的方式获取到32位应用程序中特定模块的基地址,由于是入门系列所以并没有封装实现太过于通用的获取函数,本章将继续延申这个话题,并依次实现通用版GetUserModuleBaseAddress()取远程进程中......
  • 进程命令(taskkill)
    进程命令(taskkill)https://www.cnblogs.com/lofexaw/p/9510681.html活学活用taskkill命令,干掉不听话的进程https://baijiahao.baidu.com/s?id=1764957956392121489Taskkill命令详解https://www.cnblogs.com/wqswjx/p/5496274.html......
  • Linux 进程管理
    进程的基本概念:在Linux中,进程是运行中程序的实例。每个进程都有自己的地址空间、文件描述符、资源和状态。进程是系统中资源分配和执行任务的基本单位。进程状态:进程的状态表示进程的当前运行状态。常见的进程状态包括:运行、就绪、阻塞、僵死。进程控制块:进程控制块(PCB)是操......
  • 三元里抽化粪池清理车子:城市环境的守护者
    在城市环境卫生领域,三元里抽化粪池清理车子发挥着举足轻重的作用。本文将重点关注这款清理车子在实际工作中的表现,以及它如何助力三元里地区的城市环保事业。初审朱小姐:L882OOO2548,专家团队在线解答,一分钟内回复率高达90%!三元里抽化粪池清理车子的职责使命三元里抽化粪池清理......
  • 进程管理
      进程的含义为正在运行的程序,包括这个运行的程序所占用的系统资源,进程是具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度的一个独立单位。同一个程序,同一时刻被两次运行了,它们就是两个独立的进程。 查看进程包括静态进程和动态进程psaux......
  • 【Python进阶笔记】md文档笔记第6篇:Python进程和多线程使用(图文和代码)
    本文从14大模块展示了python高级用的应用。分别有Linux命令,多任务编程、网络编程、Http协议和静态Web编程、html+css、JavaScript、jQuery、MySql数据库的各种用法、python的闭包和装饰器、mini-web框架、正则表达式等相关文章的详细讲述。全套md格式笔记和代码自取:请移步这里......
  • 进程管理
    进程是已启动的可执行程序的运行实例,进程有以下组成部分:·一个文件·被分配内存的地址空间·有权限限制·程序代码的一个或多个副本(也叫执行线程)二、进程管理1.目标了解进程的相关信息:·PID,PPID·当前的进程状态·内存的分配情况·CPU和已经花费的实际时间·用户UID,它......
  • 进程管理
    1、进程管理Linux在执行每一个程序时,就会在内存中为这个程序建立一个进程,以便让内核可以管理这个运行中的进程,进程是系统分配各种资源,进程调度的基本单位。怎么查看进程一.ps命令#psaux|head-n2USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMANDroot10.00.220646......
  • 进程管理
    一、初始进程1.进程、线程和程序的区别(1)进程:进程是程序在处理机上的一次执行过程,是一个动态的概念。进程具有创建其他进程的功能,它由程序段、数据段和进程控制块三部分组成。进程具有独立性、并发性和相互制约性。同一程序可以对应多个进程,也就是说同一程序可以同时执行于若干......
  • 第五章 进程管理
    进程有一下组成部分1已分配内存的地址空间2安全属性,包括所有权凭据和特权3程序代码的一个或多个执行线程4进程状态进程有就绪态,运行态和阻塞态三个状态,每一个进程都有唯一的PID命令:PSAUX:查看当前目录的进程ps-ef命令可以查看UIDPIDPPID等信息使用pidof和pgrep......