jollen.org

Jollen 的 Blog
Jollen's email: jollen # jollen.org
more:  Jollen's Training

[教育訓練紀錄] fork 多個小孩

.作者:jollen/
.日期:August 23, 2008 3:48 PM


今天進行「GNU Toolchains & Embedded Linux Programming」課程,在講解 fork 時,有同學問到「能不能 fork 多個 child process」,當然是可以的。後續又有同學問到,「能不能 fork 孫子」,當然也是可以的,只不過,在 child process 裡再 fork child process 並不是很主要的做法,只在一些特殊情況,例如要避免 zombie process 產生時,才會用上。

所以,我們只講解如何 fork 多個 child process 的做法。我們舉了一段 code 當做範例,這段 code 寫得很單純,可以說明 fork 的一些觀念。在這裡,大家必須了解的是「fork 之後」的行為是什麼:

1. parent process 的執行流程
2. child process 的執行流程

接著將以下的程式(n_fork.c)實際上機執行,並觀察執行結果。

n-fork.jpg

執行後出現以下結果:

$ gcc -o n_fork n_fork.c
$ ./n_fork &
This is the child process. PID: 8450
This is the child process. PID: 8451
This is the child process. PID: 8452
Parent process, PID: 8449
Child process ID: 8450 8451 8452

我們用 pstree 指令來觀察執行之後的系統狀態:

nfork-pstree.jpg

後續我們會結合一個 Web server 的練習,來展示 fork 多個 child process 的應用。

Tags:

純手工打造說明:技術專欄文章為 Jollen 原創,內容皆為人工撰寫,無 AI 生成。轉載請註明出處與作者,並全文引用。轉載時請在文章開頭或結尾明顯處註明「本文出處:https://www.jollen.org,已取得原作者同意並授權使用。」
訂閱電子報:不定期 Jollen's Blog 精選文章隨 Moko365 電子報寄送;請透過 Moko365 電子報訂閱(可隨時取消)。

Copyright(c) 2001–2008 www.jollen.org. All rights reserved.
Last update: 2026-07-22