1、了解linux系統中程序通訊的基本原理。
2、分析程序競爭資源現象,學習解決程序互斥的方法。
編制一段程式,使用系統呼叫fork()建立兩個子程序,再用系統呼叫signal()讓父程序捕捉鍵盤上來的中斷訊號(即按ctrl+c鍵),當捕捉到中斷訊號後,父程序用系統呼叫kill()向兩個子程序發出訊號,子程序捕捉到訊號後,分別輸出下列資訊後終止:
childprocess1iskilledbyparent!
childprocess2iskilledbyparent!
父程序等待兩個子程序終止後,輸出以下資訊後終止:
parentprocessiskilled!
第一步
建立c資料夾,在它下面建立hello.c檔案
mkdir c
vim test.c
第二步寫入參考程式程式
#include#include#includevoidwaiting(),stop();
intwait_mark;
main()
else
}else
}voidwaiting()
voidstop()
編譯程式
gcc -o test test.c
記錄結果
結果分析
因為fork()建立程序的速度慢於輸出字元,所以先輸出child後輸出parent
如有錯誤請指證
作業系統 實驗三(程序間通訊) 3 3 3
1 了解linux系統中程序通訊的基本原理。2 分析程序競爭資源現象,學習解決程序互斥的方法。使用系統呼叫msgget msgsnd msgrcv 及msgctl 編制一長度為1k的訊息傳送和接收的程式。程式設計 1 為了便於操作和觀察結果,用乙個程式為 引子 先後fork 兩個子程序,server...
作業系統 程序間通訊
程序間通訊涉及到3個問題 1.乙個程序如何把資訊傳遞給另乙個程序 2.確保兩個或多個程序之間不會在關鍵活動中出現交叉 3.程序間執行的順序對執行結果的影響。注意 確保程序對臨界區的 互斥 訪問。忙等待的互斥 1.遮蔽中斷 當乙個程序進入臨界區後立即遮蔽所有中斷,時鐘中斷也被遮蔽 這樣cpu就不會進行...
作業系統 程序間通訊
include include include include include include ifndef semun h 條件編譯,即若semun在標頭檔案中沒有被定義,就進行下面的編譯 define semun h union semun endif static int set semval...