more: Jollen 的 Embedded Linux 教育訓練

« [教育訓練紀錄] Symbol Table、objdump 與 ELF 綜合小考 | Home | Intel 收購 Opened Hand »

[教育訓練紀錄] 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 的應用。

--jollen

引用通告

如果您想引用這篇文章到您的Blog,
請複製下面的鏈接,並放置到您發表文章的相應界面中。

http://blog.jollen.org/mt-tb.cgi/559

發表一個評論

(您發表的意見將被立即接受,但需要一點時間與後端伺服器做同步,您的留言才會顯示在網站上。為避免 spam 攻撃,按「發表」後請輸入帳號密碼。使用者帳號:「nospam」、密碼:「nospam」。)

Top | 授權條款 | Jollen's Forum: Blog 評論、討論與搜尋
Copyright(c) 2006 www.jollen.org