【LINUX】主进程、父进程、子进程、守护进程的概念

时间:2020-12-15 14:54:41

一、摘要

详解父进程、子进程、守护进程的区别,例子稍候补充

二、定义区别

  1. 主进程
    程序执行的入口,可以理解为常用的main 函数

  2. 父进程
    对于子进程而言, 子进程的创造者,可有多个子进程。 任何进程都有父进程,追根溯源是系统启动程序。对于我们一般写的程序,主进程是最初始的父进程。

  3. 子进程
    对于父进程而言, 父进程创建的进程, 子进程只能对应一个父进程。

  4. 守护进程
    我们常言的daemon 进程,是子进程的一种状态,标记子进程与父进程同死。如果没有标记daemon , 则杀死父进程,与子进程的运行状态没有半分影响。

  5. 僵尸进程
    因为某些子进程没有设置daemon 属性,如果杀死父进程,其子进程将会变成“僵尸进程”。僵尸进程的父进程将成为init 进程的子进程。

    为避免僵尸进程,一般:
    • 设置父进程的SIGCHLD信号处理函数为 SIG_IGN (忽略信号)
    • fork 两次并杀次以及子进程,令二级子进程成为僵尸进程,成为init子进程,并被清理