linux 下 关于几个进程的区别
- 主进程
程序执行的入口,可以理解为常用的main 函数
- 父进程
对于子进程而言, 子进程的创造者,可有多个子进程。 任何进程都有父进程,追根溯源是系统启动程序。对于我们一般写的程序,主进程是最初始的父进程。
- 子进程
对于父进程而言, 父进程创建的进程, 子进程只能对应一个父进程。
- 守护进程
我们常言的daemon 进程,是子进程的一种状态,标记子进程与父进程同死。如果没有标记daemon , 则杀死父进程,与子进程的运行状态没有半分影响。
- 僵尸进程
因为某些子进程没有设置daemon 属性,如果杀死父进程,其子进程将会变成“僵尸进程”。僵尸进程的父进程将成为init 进程的子进程。
为避免僵尸进程,一般:
设置父进程的SIGCHLD信号处理函数为 SIG_IGN (忽略信号)
ork 两次并杀次以及子进程,令二级子进程成为僵尸进程,成为init子进程,并被清理
- 孤儿进程:
父进程如果不等待子进程退出,在子进程之前就结束了自己的“生命”此时的子进程叫做孤儿进程。====爹没了。
Linux避免系统存在过多的孤儿进程,init进程收留孤儿进程,变成孤儿进程的父进程。====init养父
- 僵尸进程:
创建子进程后,子进程退出状态不被收集,变成僵尸进程。爹不要它了
除非爹死后变孤儿init养父接收。如果父进程是死循环,那么该僵尸进程就变成游魂野鬼消耗空间。
- 守护进程:
守护进程(Daemon)是在一类脱离终端在后台执行的程序, 通常以 d 结尾, 随系统启动, 其父进程 (ppid) 通常是init 进程。

浙公网安备 33010602011771号