1. 程式人生 > >Linux多工程式設計(六)---編寫多程序程式及其程式碼

Linux多工程式設計(六)---編寫多程序程式及其程式碼

實驗目的

   通過編寫多程序程式,熟練掌握fork()、exec()、wait()和waitpid()等函式的使用,進一步理解在Linux中多程序程式設計的步驟。

實驗內容

   該實驗有3個程序,其中一個為父程序,其餘兩個是該父程序建立的子程序,其中一個子程序執行“ls -l”指令,另一個子程序在暫停5s後異常退出。父程序先用阻塞方式等待第一個程序的結束,然後用非阻塞方式等待另一個子程序的退出,待收集到第2個子程序結束的訊息後,父程序就返回。

實驗步驟

   該實驗的流程圖如下

   

實驗原始碼

   先看一下下面的程式碼,這個程式能得到我們所希望的結果嗎?它的執行會產生幾個程序?

   

                                                                                                                                                                              

   執行結果如下圖

     

  也有可能會出現下面的結果

  

  分析執行結果可以指知道,這裡其實是產生了3個子程序,在子程序2中又產生了一個子程序1。

  下面咱們貼出正確的實驗程式碼:

                                                                                                  

                                     

  執行結果如下圖

   

  不論程式執行多少次,結果都是一樣的。對比上一個結果,咱們就可以理解多程序該怎麼建立了。一定要明確建立子程序的父程序是哪一個。

  相關實驗程式碼上傳到網站,multi_proc_wrong.c點此下載,multi_proc.c點此下載

/************************************************************************************************

*歡迎關注本人公眾號:BigBearIT,一起分享交流知識,更多精彩等著你!

*************************************************************************************************/