實(shí)驗二,進(jìn)程通信,管道共享內(nèi)存

實(shí)驗二,進(jìn)程通信,管道共享內(nèi)存

ID:47404460

大?。?.35 MB

頁數(shù):17頁

時間:2020-01-10

實(shí)驗二,進(jìn)程通信,管道共享內(nèi)存_第頁
預(yù)覽圖正在加載中,預(yù)計需要20秒,請耐心等待
資源描述:

《實(shí)驗二,進(jìn)程通信,管道共享內(nèi)存》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、........操作系統(tǒng)實(shí)驗報告實(shí)驗二:進(jìn)程通信(一)——管道及共享內(nèi)存一、實(shí)驗?zāi)康摹ち私膺M(jìn)程之中相互通信的方式·加深對管道通信的了解·了解共享內(nèi)存通信的程序設(shè)計方法·了解和熟悉Linux支持的共享存儲區(qū)機(jī)制二、實(shí)驗內(nèi)容和步驟任務(wù)一、(1)閱讀以上父子進(jìn)程利用管道進(jìn)行通信的例子(例1),寫出程序的運(yùn)行結(jié)果并分析。(2)編寫程序:父進(jìn)程利用管道將一字符串交給子進(jìn)程處理。子進(jìn)程讀字符串,將里面的字符反向后再交給父進(jìn)程,父進(jìn)程最后讀取并打印反向的字符串任務(wù)二、1)閱讀例2的程序,運(yùn)行一次該程序,然后用ipcs命令查看系統(tǒng)中共享存儲區(qū)

2、的情況,再次執(zhí)行該程序,再用ipcs.專業(yè)學(xué)習(xí)資料.........命令查看系統(tǒng)中共享內(nèi)存的情況,對兩次的結(jié)果進(jìn)行比較,并分析原因。最后用ipcrm命令刪除自己建立的共享存儲區(qū)。(有關(guān)ipcs和ipcrm介紹見后面一頁)(2)每個同學(xué)登陸兩個窗口,先在一個窗口中運(yùn)行例3程序1(或者只登陸一個窗口,先在該窗口中以后臺方式運(yùn)行程序1),然后在另一個窗口中運(yùn)行例3程序2,觀察程序的運(yùn)行結(jié)果并分析。運(yùn)行結(jié)束后可以用ctrl+c結(jié)束程序1的運(yùn)行。(3)編寫程序:使用系統(tǒng)調(diào)用shmget(),shmat(),shmdt(),shmctl(

3、),編制程序。要求在父進(jìn)程中生成一個30字節(jié)長的私有共享內(nèi)存段。接下來,設(shè)置一個指向共享內(nèi)存段的字符指針,將一串大寫字母寫入到該指針指向的存貯區(qū)。調(diào)用fork()生成子進(jìn)程,讓子進(jìn)程共享內(nèi)存段中的內(nèi)容。接著,將大寫字母改成小寫,子進(jìn)顯示程修改共享內(nèi)存中的內(nèi)容。之后,子進(jìn)程將脫接共享內(nèi)存段并退出。父進(jìn)程在睡眠5秒后,在此顯示共享內(nèi)存段中的內(nèi)容(此時已經(jīng)是小寫字母)。一、代碼及運(yùn)行結(jié)果分析1.任務(wù)1(1)①代碼:#include#include#include#inc

4、lude#include.專業(yè)學(xué)習(xí)資料.........#includeintmain(){intx,fd[2];charbuf[30],s[30];pipe(fd);while((x=fork())==-1);if(x==0){close(fd[0]);printf("ChildProcess!");strcpy(buf,"Thisisanexample");write(fd[1],buf,30);exit(0);}else{close(fd[1]);p

5、rintf("ParentProcess!");read(fd[0],s,30);printf("%s",s);}}②截圖:.專業(yè)學(xué)習(xí)資料.........③結(jié)果和分析:創(chuàng)建一個管道,調(diào)用fork()函數(shù)產(chǎn)生兩個進(jìn)程,我的系統(tǒng)優(yōu)先先執(zhí)行父進(jìn)程,比較疑惑,既然這樣,管道中并沒有數(shù)據(jù)是如何得出最后結(jié)果的,后來百度了一下解釋說是因為管道本身是一種同步機(jī)制,并且printf執(zhí)行的時間要比其他程序時間長得多,才會這樣。然后執(zhí)行子程序,將數(shù)據(jù)寫入管道,然后父程序打印出來2.任務(wù)1(2)①代碼:#include#i

6、nclude#include#include#include.專業(yè)學(xué)習(xí)資料.........#includevoidfanzhuan(char*s){char*p=s+strlen(s)-1;chartemp;while(s

7、example");pipe(fd);write(fd[1],buf,20);while((x=fork())==-1);if(x==0){printf("ChildProcess!");read(fd[0],s,20);.專業(yè)學(xué)習(xí)資料.........//printf("%s",s);fanzhuan(s);write(fd[1],s,20);exit(0);}else{wait(NULL);close(fd[1]);printf("ParentProcess!");read(fd[0],m,20);prin

8、tf("%s",m);}}②截圖:.專業(yè)學(xué)習(xí)資料.........3.任務(wù)2(1)①代碼:#include#include#include#include#include

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。