實驗目的
通過編寫多進程程序,熟練掌握fork()、exec()、wait()和waitpid()等函數的使用,進一步 理解在Linux中多進程編程的步驟。
實驗內容
該實驗有3個進程,其中一個為父進程,其余兩個 是該父進程創建的子進程,其中一個子進程運行“ls -l”指令,另一個子進程在暫停5s後異常退出。父進程 先用阻塞方式等待第一個進程的結束,然後用非阻塞方式等待另一個子進程的退出,待收集到第2個子進程結 束的消息後,父進程就返回。
實驗步驟
該實驗的流程圖如下
實驗源代碼
先看一下下面的代碼,這個程序能得到我們所希望的結果嗎?它的運行會產生幾個進程?
執行結果如下圖
也有可能會出現下面的結果
分析執行結果可以指知道,這裡其實是產生了3個子進程,在子進程2中又產生了一個子進程1。
下面咱們貼出正確的實驗代碼:
執行結果如下圖
不論程序執行多少次,結果都是一樣的。對比上一個結果,咱們就可以理解多進程該怎麼創建了。一定要 明確創建子進程的父進程是哪一個。
相關實驗代碼上傳到網站,
multi_proc_wrong.c:http://download.csdn.net/detail/mybelief321/5556679
multi_proc.c :http://download.csdn.net/detail/mybelief321/5556693