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

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

时间:2023-10-18 23:04:53浏览次数:28  
标签:退出 创建 孤儿 进程 守护 僵尸

@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/7923639

相关文章

  • 多进程操作和线程了解
    进程锁"""锁在IT界都是非常重要的,不但在Python中出现,尤其是数据库中得锁更多,比如:表锁、行锁、悲观锁、乐观锁、进程锁、互斥锁、递归锁、可重入锁、死锁等"""#使用锁的目的就是为了保证安全!importtimefrommultiprocessingimportProcess,Lockdeftask(i,lock):#......
  • 多进程操作和线程了解
    今日内容详细进程锁"""锁在IT界都是非常重要的,不但在Python中出现,尤其是数据库中得锁更多,比如:表锁、行锁、悲观锁、乐观锁、进程锁、互斥锁、递归锁、可重入锁、死锁等"""#使用锁的目的就是为了保证安全!importtimefrommultiprocessingimportProcess,Lockdeftask(i,......
  • Linux查看进程的CPU和内存使用情况
    ps-aux|grep"spring-native-hello"结果:chkusr106110.00.0131313253364pts/1Sl19:560:00./spring-native-hellochkusr131920.00.0112812972pts/1S+20:040:00grep--color=autospring-native-hello每列的含义:USER:这一......
  • 进程信号
    信号什么是信号用户或者操作系统通过发送一定的信号,通知进程,让进程做出相应的处理,这就是信号进程要处理信号,必须要具有识别他的能力信号产生之后,进程可以找个时间进行处理,不需要立即进行处理——那么此时我们就要记录下来这个信号——记录这个信号我们可以用位图结构常见的信号:1到3......
  • Linux进程间通信
    因为进程间具有独立性,你们想用进行进程间通信,难度还是比较大的。进程间通信的本质就是让不同的进程看到同一份资源。为什么要进行进程间通信——交互数据、控制、通知等目标进程间通信的技术背景进程是具有独立性的。虚拟地址空间+页表保证进程运行的独立性(进程内核数据结构+进程......
  • 服务器如何终止进程
    先在命令行中输入psaux显示服务器全部的进程,找到自己想要终止的进程 PID为进程的ID比如终止ID为143508这个进程kill143508就可以终止这个进程了!!!......
  • delphi判断进程和杀进程函数
    functionTMainForm.CheckTask(ExeFileName:string):Boolean;//检测XX进程是否存在函数const PROCESS_TERMINATE=$0001;var ContinueLoop:BOOL; FSnapshotHandle:THandle; FProcessEntry32:TProcessEntry32;begin result:=False; FSnapshotHandle:=Create......
  • Cef笔记:进程间通信
    原文出处:https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage#markdown-header-threadsInter-ProcessCommunication(IPC)SinceCEF3runsinmultipleprocessesitisnecessarytoprovidemechanismsforcommunicatingbetweenthoseprocesses.CefBrowserand......
  • 进程
    进程的基本概念同一个程序3个进程同时进行(比如同时打开3个QQ),它们的PID也是不一样的。同一个程序执行一次进程,然后结束掉这个进程,然后再执行一次进程,则两次进程的PID是不一样的进程的状态转换运行态到就绪态:比如CPU收到一个时钟中断的信号,CPU会让当前进程下CPU,该进......
  • 实现多任务之进程与线程
    进程与线程一、多任务概念1、举个栗子比如在网盘下载资料的时候,为什么要多个资料同时下载?答:多个任务同时下载可以大大提高程序执行的效率。多任务的最大好处就是充分利用好CPU资源,提高程序的执行效率。2、什么是多任务多任务是指同一时间内执行多个任务。例如:现在安装的......