作業系統 實驗三(程序間通訊) 3 3 2

2021-10-06 17:32:47 字數 986 閱讀 5019

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...