歡迎您光臨本站 註冊首頁

Linux下創建進程線程以及通信技術的使用

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

.

二、實驗內容

1. Fibonacci序列是0, 1, 1, 2, 3, 5, 8

, .... ,通常它可以表示為:

f ib0 = 0

f ib1 = 1

f ibn = f ib

n1 f ibn2

編寫一個C程序,使用系統調用fork()創建兩個子進程P1P2.他們的任務如下:

1) 子進程P1列印自己的pid,然後使用

exec(族)系統調用顯示當前目錄下文件和子目錄的詳細信息.

2) 子進程P2中生成Fibonacci序列,序列的個數在程序命令行中作為參數傳入,例如,參數為7,則子進程P2生成的Fibonacci序列為012

35813.通過某種進程通信機制(共享內存、管道、消息等IPC機制),子進程P2把生成的Fibonacci序列發送給父進程,並由父進程輸出(列印)Fibonacci序列.在父子進程通信的過程中必須實現同步,以使在子進程完成生成序列之前,父進程不會輸出Fibonacci序列.使用

wait()系統調用可以實現各進程的同步.執行必要的錯誤檢查以保證不會接受命令行參數傳遞來的負值.

2. 編寫程序實現生產者-消費者問題.使用linuxPthread線程庫,創建2個生產者線程和2個消費者線程.生產者線程計算當前的時間,把時間、第幾次計算時間的序號(循環次數)和線程

ID作為一個消息,把消息放入緩衝區,消費者線程從緩衝區讀出一個消息並顯示消息.緩衝區大小為5個,每個生產者線程生產10個消息,每個消費者線程消費10個消息,即生產和消費分別為20次.

生產者及消費者線程之間需要實現同步和互斥,Pthread線程庫的信號量機制可以完成這一任務.


[火星人 ] Linux下創建進程線程以及通信技術的使用已經有247次圍觀

http://coctec.com/docs/linux/show-post-47992.html