歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Linux多任務編程(六) 編寫多進程程序及其代碼

Linux多任務編程(六) 編寫多進程程序及其代碼

日期:2017/3/3 16:20:44   编辑:關於Linux

實驗目的

通過編寫多進程程序,熟練掌握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

Copyright © Linux教程網 All Rights Reserved