【LINUX】主進程、父進程、子進程、守護進程的概念


一、摘要

詳解父進程、子進程、守護進程的區別,例子稍候補充

二、定義區別

  1. 主進程
    程序執行的入口,可以理解為常用的main 函數

  2. 父進程
    對於子進程而言, 子進程的創造者,可有多個子進程。 任何進程都有父進程,追根溯源是系統啟動程序。對於我們一般寫的程序,主進程是最初始的父進程。

  3. 子進程
    對於父進程而言, 父進程創建的進程, 子進程只能對應一個父進程。

  4. 守護進程
    我們常言的daemon 進程,是子進程的一種狀態,標記子進程與父進程同死。如果沒有標記daemon , 則殺死父進程,與子進程的運行狀態沒有半分影響。

  5. 僵屍進程
    因為某些子進程沒有設置daemon 屬性,如果殺死父進程,其子進程將會變成“僵屍進程”。僵屍進程的父進程將成為init 進程的子進程。

    為避免僵屍進程,一般:

    • 設置父進程的SIGCHLD信號處理函數為 SIG_IGN (忽略信號)
    • fork 兩次並殺次以及子進程,令二級子進程成為僵屍進程,成為init子進程,並被清理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM