搜尋
首頁運維linux運維什麼是父進程和子進程

什麼是父進程和子進程

Jun 22, 2017 pm 03:41 PM
行程

父進程

在電腦領域,父進程(英文:Parent Process)指已建立一個或多個子進程的進程。

UNIX


#在UNIX裡,除了程式0(即PID =0的交換進程,Swapper Process)以外的所有進程都是由其他進程使用系統呼叫fork創建的,這裡調用fork創建新進程的進程即為父進程,而相對應的為其創建出的進程則為子進程,因而除了進程0以外的進程都只有一個父進程,但一個進程可以有多個子進程。

作業系統核心以行程識別碼(Process Identifier,即PID)來識別行程。進程0是系統引導時創建的一個特殊進程,在其呼叫fork創建出一個子進程(即PID=1的進程1,又稱init)後,進程0就轉為交換進程(有時也稱為空閒進程),而進程1(init進程)就是系統裡其他所有進程的祖先。

殭屍行程與孤兒程序


當一個子程序結束運作(一般是呼叫exit、執行階段發生致命錯誤或當收到終止訊號所導致)時,子進程的退出狀態(回傳值)會回報給作業系統,系統則以SIGCHLD訊號將子進程被結束的事件告知父進程,此時子進程的進程控制區塊(PCB )仍駐留在記憶體中。一般來說,收到SIGCHLD後,父行程會使用wait系統呼叫以取得子行程的退出狀態,然後核心就可以從記憶體中釋放已結束的子行程的PCB;而如若父行程沒有這麼做的話,子行程的PCB就會一直駐留在記憶體中,也就是成為殭屍行程。

孤兒進程則是指父進程結束後仍在執行的子進程。在類UNIX系統中,孤兒進程一般會被init進程所“收養”,成為init的子進程。

為避免產生殭屍進程,實際應用中一般採取的方式為:

  1. #將父程式中對SIGCHLD訊號的處理函數設為SIG_IGN(忽略訊號) ;

  2. fork兩次並殺死一級子進程,令二級子進程成為孤兒進程而被init所「收養」、清理。

Linux

在Linux核心中,行程和POSIX執行緒有著相當微小的差別,父行程的定義也與UNIX不盡相同。 Linux有兩種父進程,分別稱為(形式)父進程與實際父進程,對於一個子進程來說,其父進程是在子進程結束時收取SIGCHLD訊號的進程,而實際父進程則在多執行緒環境裡實際創建該子程序的進程。對於普通進程來說,父進程與實際父進程是同一個進程,但對於一個以進程形式存在的POSIX線程,父進程和實際父進程可能是不一樣的。

 

子程序


在電腦領域中,子程序為由另一個程序(對應稱為父程序)所創建的進程。子進程繼承了父進程的大部分屬性,例如檔案描述符。

產生


#在Unix中,子程序通常會為系統呼叫fork的產物。在此情況下,子進程一開始就是父進程的副本,而在這之後,根據具體需要,子進程可以藉助exec呼叫來鍊式載入另一程序。

與父進程的關係


#一個行程可能下屬多個子進程,但最多只能有1個父行程,而若某一行程沒有父行程,則可知該行程很可能由核心直接產生。在Unix與類別Unix系統中,進程ID為1的進程(即init進程)是在系統引導階段由核心直接建立的,且不會在系統運行過程中終止執行(可參考Linux啟動流程) ;而對於其他無父進程的進程,則可能是為在使用者空間完成各種後台任務而執行的。

當某一子程序結束、中斷或恢復執行時,核心會發送SIGCHLD訊號給其父程序。在預設情況下,父進程會以SIG_IGN函數忽略之。

「孤兒行程」與「殭屍行程」


#在對應的父行程結束執行後,行程就會變成孤兒行程,但之後會立即由init進程「收養」為其子進程。

某一子程序終止執行後,若其父進程未提前呼叫wait,則內核會持續保留子程序的退出狀態等信息,以使父進程可以 wait獲取之。而因為在這種情況下,子程序雖已終止,但仍在消耗系統資源,所以亦稱殭屍進程。 wait常於SIGCHLD訊號的處理函數中呼叫。

解決與預防

在POSIX.1-2001標準規定中,父程序可將SIGCHLD的處理函數設為SIG_IGN(也為預設設定),或為SIGCHLD設定SA_NOCLDWAIT標記,以使核心可以自動回收已終止的子程序的資源。自Linux 2.6與FreeBSD 5.0起,兩種核心皆支援了這兩種方式。但是,在忽略SIGCHLD訊號的問題上,由於System V與BSD由來已久的差異,若要回收派生出的子程序的資源,呼叫wait仍是最便捷的方式。

以上是什麼是父進程和子進程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Linux操作:利用維護模式Linux操作:利用維護模式Apr 19, 2025 am 12:08 AM

Linux的維護模式可以通過GRUB菜單進入,具體步驟為:1)在GRUB菜單中選擇內核並按'e'編輯,2)在'linux'行末添加'single'或'1',3)按Ctrl X啟動。維護模式提供了一個安全環境,適用於系統修復、重置密碼和系統升級等任務。

Linux:如何進入恢復模式(和維護)Linux:如何進入恢復模式(和維護)Apr 18, 2025 am 12:05 AM

進入Linux恢復模式的步驟是:1.重啟系統並按特定鍵進入GRUB菜單;2.選擇帶有(recoverymode)的選項;3.在恢復模式菜單中選擇操作,如fsck或root。恢復模式允許你以單用戶模式啟動系統,進行文件系統檢查和修復、編輯配置文件等操作,幫助解決系統問題。

Linux的基本要素:為初學者解釋Linux的基本要素:為初學者解釋Apr 17, 2025 am 12:08 AM

Linux的核心組件包括內核、文件系統、Shell和常用工具。 1.內核管理硬件資源並提供基本服務。 2.文件系統組織和存儲數據。 3.Shell是用戶與系統交互的接口。 4.常用工具幫助完成日常任務。

Linux:看看其基本結構Linux:看看其基本結構Apr 16, 2025 am 12:01 AM

Linux的基本結構包括內核、文件系統和Shell。 1)內核管理硬件資源,使用uname-r查看版本。 2)EXT4文件系統支持大文件和日誌,使用mkfs.ext4創建。 3)Shell如Bash提供命令行交互,使用ls-l列出文件。

Linux操作:系統管理和維護Linux操作:系統管理和維護Apr 15, 2025 am 12:10 AM

Linux系統管理和維護的關鍵步驟包括:1)掌握基礎知識,如文件系統結構和用戶管理;2)進行系統監控與資源管理,使用top、htop等工具;3)利用系統日誌進行故障排查,借助journalctl等工具;4)編寫自動化腳本和任務調度,使用cron工具;5)實施安全管理與防護,通過iptables配置防火牆;6)進行性能優化與最佳實踐,調整內核參數和養成良好習慣。

了解Linux的維護模式:必需品了解Linux的維護模式:必需品Apr 14, 2025 am 12:04 AM

Linux維護模式通過在啟動時添加init=/bin/bash或single參數進入。 1.進入維護模式:編輯GRUB菜單,添加啟動參數。 2.重新掛載文件系統為讀寫模式:mount-oremount,rw/。 3.修復文件系統:使用fsck命令,如fsck/dev/sda1。4.備份數據並謹慎操作,避免數據丟失。

Debian如何提升Hadoop數據處理速度Debian如何提升Hadoop數據處理速度Apr 13, 2025 am 11:54 AM

本文探討如何在Debian系統上提升Hadoop數據處理效率。優化策略涵蓋硬件升級、操作系統參數調整、Hadoop配置修改以及高效算法和工具的運用。一、硬件資源強化確保所有節點硬件配置一致,尤其關注CPU、內存和網絡設備性能。選擇高性能硬件組件對於提升整體處理速度至關重要。二、操作系統調優文件描述符和網絡連接數:修改/etc/security/limits.conf文件,增加系統允許同時打開的文件描述符和網絡連接數上限。 JVM參數調整:在hadoop-env.sh文件中調整

Debian syslog如何學習Debian syslog如何學習Apr 13, 2025 am 11:51 AM

本指南將指導您學習如何在Debian系統中使用Syslog。 Syslog是Linux系統中用於記錄系統和應用程序日誌消息的關鍵服務,它幫助管理員監控和分析系統活動,從而快速識別並解決問題。一、Syslog基礎知識Syslog的核心功能包括:集中收集和管理日誌消息;支持多種日誌輸出格式和目標位置(例如文件或網絡);提供實時日誌查看和過濾功能。二、安裝和配置Syslog(使用Rsyslog)Debian系統默認使用Rsyslog。您可以通過以下命令安裝:sudoaptupdatesud

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具