




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗七 消息及其傳送機制一、 實驗?zāi)康模?)了解什么是消息。(2)熟悉消息傳送的機理。二、 實驗內(nèi)容與要求1、消息的創(chuàng)建、發(fā)送和接收。使用系統(tǒng)調(diào)用msgget( ),msgsnd( ),msgrev( ),及msgctl( )編制一長度為256Bytes的消息發(fā)送和接收的程序,將自己的進程號傳遞給對方,并輸出至屏幕。2、對整個實驗過程進行分析總結(jié),給出詳細步驟。三、 實驗過程1、編寫程序?qū)崿F(xiàn)消息的創(chuàng)建、發(fā)送和接收。將參考程序用vi編輯器錄入,然后編譯執(zhí)行。1、 client.c#include #include #include #include #include #define MSGKEY
2、 75 /*定義一個消息關(guān)鍵字*/struct msgform /*定義一個結(jié)構(gòu),它是一個消息的模式,只說明結(jié)構(gòu)的形式*/ long mtype; /*消息類型*/ char mtext256; /*消息正文數(shù)組*/; int main()struct msgform msg; /*定義msg是前面說明的消息結(jié)構(gòu)類型的變量*/int msggid,pid,*pint;msggid=msgget(MSGKEY,0777); /*用系統(tǒng)調(diào)用創(chuàng)建一個消息隊列*/pid=getpid(); /*獲得當(dāng)前進程的PID*/printf(“client:pid=%dn”, pid);pint=(int*)m
3、sg.mtext; /*將消息正文的頭指針賦給指針變量pint*/ *pint=pid;msg.mtype=1; /*指定客戶進程的消息類型為1*/msgsnd(msggid,&msg,sizeof(int),0); /*向msggid的消息隊列發(fā)送消息msg*/msgrcv(msggid,&msg,256,pid,0); /*接收pid類型的消息 */printf(“client:receive from pid %dn”,*pint);return 0;2、server.c#include #include #include #include #include #include #incl
4、ude #define MSGKEY 75 /*定義一個消息關(guān)鍵字*/struct msgform /*定義一個與客戶端相同的消息關(guān)鍵字*/ long mtype; /*消息類型*/ char mtext256; /*消息正文數(shù)組*/msg; /*也可以使用這種方式說明消息結(jié)構(gòu)變量*/ void cleanup(int signo); /*說明一個外部函數(shù)*/ int msgqid;int main()int i,pid,*pint;for ( i=0; i23; i+) /*對22個軟中斷的特殊處理*/signal(i, cleanup); /*若收到22個軟中斷,轉(zhuǎn)向執(zhí)行cleanup*/
5、msggid=msgget(MSGKEY,0777|IPC_CREAT); /*創(chuàng)建一個與客戶程序相同關(guān)鍵字的消息隊列,但它的標(biāo)志是0777與IPC_CREAT 做“或”操作的結(jié)果*/printf(“server:pid=%dn”, getpid(); /*輸出服務(wù)端的進程ID*/for(;) /*用無限循環(huán)完成下列語句*/ msgrcv(msggid,&msg,256,1,0); /*接收來自客戶進程或類型為1的消息 */pint=(int*)msg.mtext; /*將客戶端的消息正文傳遞給pint*/ pid=*pint; /*將讀出消息指針?biāo)蚿id,此時*pint中是客戶進程的pid值
6、*/printf(“server:receive from pid %dn”,pid);msg.mtype=pid; /*已接受客戶進程的pid為消息類型*/*pint=getpid(); /*以本進程pid作為消息構(gòu)成消息傳遞內(nèi)容*/msgsnd(msggid,&msg,sizeof(int),0); /*發(fā)送消息*/void cleanup(int signo) msgctl(msggid , IPC_RMID , 0); /*刪除消息隊列*/exit(0);如下圖所示:client.cserver.c運行結(jié)果如下所示:2、思考題(1)單獨執(zhí)行client或server 有什么結(jié)果? (2
7、)執(zhí)行一個server程序,多次執(zhí)行client有什么結(jié)果? (3)消息機制與管道通信的區(qū)別?在消息機制中,進程間的數(shù)據(jù)交換是以格式化的message為單位,程序員直接利用操作系統(tǒng)提供的一組通信命令,不僅能實現(xiàn)大量的數(shù)據(jù)傳遞,而且還是隱藏通信細節(jié),是通信過程對用戶透明,減少通信程序的復(fù)雜性。當(dāng)今流行的微內(nèi)核操作系統(tǒng)中,微內(nèi)核與服務(wù)器間的通信都采用了消息機制。管道,是指連接一個讀進程和寫進程以實現(xiàn)他們之間通信的一個共享文件。向管道提供輸入的發(fā)送進程,以字符流形式將大量數(shù)據(jù)送入管道;而接受管道輸出的接收進程,從管道中接收數(shù)據(jù)。管道通信方式的中間介質(zhì)是文件,通常稱這種文件為管道文件。兩個進程利用管道
8、文件進行通信時,一個進程為寫進程,另一個進程為讀進程。寫進程通過寫端(發(fā)送端)往管道文件中寫入信息;讀進程通過讀端(接收端)從管道文件中讀取信息。兩個進程協(xié)調(diào)不斷地進行寫、讀,便會構(gòu)成雙方通過管道傳遞信息的流水線。消息通信方式以消息緩沖區(qū)為中間介質(zhì),通信雙方的發(fā)送和接收操作均以消息為單位。在存儲器中,消息緩沖區(qū)被組織成隊列,通常稱之為消息隊列。創(chuàng)建消息隊列用系統(tǒng)調(diào)用MSGGET()來實現(xiàn),這一步工作也被稱為消息隊列的初始化。在進行通信時,消息隊列的發(fā)送和接收分別用系統(tǒng)調(diào)用MSGSND()和MSGRCV()來實現(xiàn)。在需要改變隊列的使用權(quán)限及其它一些特性時,用MSGCTL()來實現(xiàn)。四、 實驗分析與總結(jié)通過這次實驗了解了Unix的消息機制,并獨自編程實現(xiàn)了消息的創(chuàng)建發(fā)送與接收,這對我對于
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河北省承德市豐寧縣鳳山第一中學(xué)2025年高二下化學(xué)期末聯(lián)考模擬試題含解析
- 2025屆廣西欽州市靈山縣化學(xué)高一下期末監(jiān)測模擬試題含解析
- 江蘇裝飾裝修管理辦法
- 新疆旅居人員管理辦法
- 機械外協(xié)加工管理辦法
- 人臉3D建模與渲染-洞察及研究
- 北京隔離薪資管理辦法
- 農(nóng)業(yè)領(lǐng)域信用管理辦法
- 35kV變電站畢業(yè)設(shè)計指導(dǎo):助力學(xué)生掌握電力系統(tǒng)知識與技能
- 生產(chǎn)過程數(shù)字化-洞察及研究
- 車輛不過戶免責(zé)協(xié)議書范本
- 校園信息化建設(shè)中的技術(shù)難題與解決方案
- ?;肥褪髽I(yè)三基三記培訓(xùn)
- 精-品解析:廣東省深圳紅嶺中學(xué)2024-2025學(xué)年高一上學(xué)期第一學(xué)段考(期中)英語試題(原卷版)
- 論語十二章原文全篇高中版
- 食堂內(nèi)部控制制度
- 世界衛(wèi)生組織人類精液及精子-宮頸粘液相互作用實驗室檢驗手冊第五版
- 2024-2025學(xué)年初中信息技術(shù)(信息科技)七年級下冊蘇科版(2023)教學(xué)設(shè)計合集
- 《創(chuàng)傷失血性休克中國急診專家共識(2023)》解讀課件
- 水產(chǎn)品營銷課程設(shè)計
- 【真題】2024年常州市中考英語試卷(含答案解析)
評論
0/150
提交評論