Skip to Content
LINUX系統程式設計 第二版
book

LINUX系統程式設計 第二版

by Robert Love
December 2013
Intermediate to advanced
496 pages
8h 57m
Chinese
GoTop Information, Inc.
Content preview from LINUX系統程式設計 第二版
174
|
第五章
殭屍行程
如同稍早所討論的,一個已經終止的行程,如果尚未被其父行程檢查過狀態,稱為殭屍
行程(zombie)。殭屍行程會繼續消耗系統資源,儘管只佔用比例很小的系統資源(僅
夠維持該行程原本的骨架)。有這些資源被保留著,想要檢查其子行程之狀態的父行
程,才有辦法取得與這些行程之生死有關的資訊。一旦父行程這麼做之後,核心才會完
全清除該行程,於是殭屍行程便不復存在。
然而,任何長時間使用 Unix 的人必定都曾看過無所事事的殭屍行程。這些行程,常稱
鬼魂行程
ghost
),肇因於不負責任的父行程。如果你的應用程式派生(fork)了一
個子行程,你的應用程式有責任(除非它很短命,正如你馬上會看到的)等待其子行
程,即使它僅僅是丟棄所收集到的資訊。否則,你的行程的所有子行程將成為無所事事
的鬼魂行程、擠滿系統的行程清單,以及讓用戶對你的應用程式的草率實作感到不滿。
然而,如果父行程的死亡(終止)在子行程之前,或者如果在它死亡之前有機會等待它
的殭屍子行程?每當有一個行程終止時,Linux 核心會把它的所有子行程重新指定給 init
行程(pid 值為 1 的行程)。如此可確保每個行程都會具有一個直接的父行程。接著,
init 行程會週期性地等待它的所有子行程,如此可確保殭屍行程不會停留太久的時間—
不會有無所事事的鬼魂行程!因此,如果一個父行程的死亡在子行程之前,或是沒有在
結束之前等待它的子行程,這些子行程最後會重新指定給 init 行程,由它負責等待,這
讓它們得以全部結束。此做法被認為是一個好的實務作為,有了這個保障 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

優雅的SciPy|Python科學研究的美學

優雅的SciPy|Python科學研究的美學

Juan Nunez-Iglesias, Stéfan van der Walt, Harriet Dashnow
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普

Publisher Resources

ISBN: 9789862769812