一、摘要
详解父进程、子进程、守护进程的区别,例子稍候补充
二、定义区别
-
主进程
程序执行的入口,可以理解为常用的main 函数 -
父进程
对于子进程而言, 子进程的创造者,可有多个子进程。 任何进程都有父进程,追根溯源是系统启动程序。对于我们一般写的程序,主进程是最初始的父进程。 -
子进程
对于父进程而言, 父进程创建的进程, 子进程只能对应一个父进程。 -
守护进程
我们常言的daemon 进程,是子进程的一种状态,标记子进程与父进程同死。如果没有标记daemon , 则杀死父进程,与子进程的运行状态没有半分影响。 -
僵尸进程
因为某些子进程没有设置daemon 属性,如果杀死父进程,其子进程将会变成“僵尸进程”。僵尸进程的父进程将成为init 进程的子进程。为避免僵尸进程,一般:
- 设置父进程的SIGCHLD信号处理函数为 SIG_IGN (忽略信号)
- fork 两次并杀次以及子进程,令二级子进程成为僵尸进程,成为init子进程,并被清理