linux 下 关于几个进程的区别

  • 主进程

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

  • 父进程

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

  • 子进程

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

  • 守护进程

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

  • 僵尸进程

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

为避免僵尸进程,一般:

    设置父进程的SIGCHLD信号处理函数为 SIG_IGN (忽略信号)

    ork 两次并杀次以及子进程,令二级子进程成为僵尸进程,成为init子进程,并被清理

  1. 孤儿进程:

父进程如果不等待子进程退出,在子进程之前就结束了自己的“生命”此时的子进程叫做孤儿进程。====爹没了。
Linux避免系统存在过多的孤儿进程,init进程收留孤儿进程,变成孤儿进程的父进程。====init养父

  1. 僵尸进程:

创建子进程后,子进程退出状态不被收集,变成僵尸进程。爹不要它了
除非爹死后变孤儿init养父接收。如果父进程是死循环,那么该僵尸进程就变成游魂野鬼消耗空间。

  1. 守护进程:

守护进程(Daemon)是在一类脱离终端在后台执行的程序, 通常以 d 结尾, 随系统启动, 其父进程 (ppid) 通常是init 进程。

 

posted @ 2020-12-16 19:35  成一  阅读(160)  评论(0)    收藏  举报