![操作系統(tǒng)上機(jī)報(bào)告_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/31/8ba1676a-86ae-47ea-b70f-6ac8eaddddb7/8ba1676a-86ae-47ea-b70f-6ac8eaddddb71.gif)
![操作系統(tǒng)上機(jī)報(bào)告_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/31/8ba1676a-86ae-47ea-b70f-6ac8eaddddb7/8ba1676a-86ae-47ea-b70f-6ac8eaddddb72.gif)
![操作系統(tǒng)上機(jī)報(bào)告_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/31/8ba1676a-86ae-47ea-b70f-6ac8eaddddb7/8ba1676a-86ae-47ea-b70f-6ac8eaddddb73.gif)
![操作系統(tǒng)上機(jī)報(bào)告_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/31/8ba1676a-86ae-47ea-b70f-6ac8eaddddb7/8ba1676a-86ae-47ea-b70f-6ac8eaddddb74.gif)
![操作系統(tǒng)上機(jī)報(bào)告_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-7/31/8ba1676a-86ae-47ea-b70f-6ac8eaddddb7/8ba1676a-86ae-47ea-b70f-6ac8eaddddb75.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、操作系統(tǒng)計(jì)算機(jī)報(bào)告實(shí)驗(yàn)1。匿名管道通信第一,實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)創(chuàng)建匿名管道,并能夠使用管道在進(jìn)程之間進(jìn)行通信。二、實(shí)驗(yàn)內(nèi)容一個(gè)名為“父”的單個(gè)文檔應(yīng)用程序和一個(gè)名為“子”的單個(gè)文檔應(yīng)用程序分別被建立為父進(jìn)程和子進(jìn)程,并且由父進(jìn)程創(chuàng)建匿名管道,使得父進(jìn)程和子進(jìn)程可以將數(shù)據(jù)寫入和讀取到匿名管道中。三、設(shè)計(jì)和實(shí)施過程這個(gè)實(shí)驗(yàn)是在VC6.0上實(shí)現(xiàn)的A.父進(jìn)程首先,構(gòu)建一個(gè)單一的父文檔應(yīng)用程序,添加“創(chuàng)建管道”、“讀取數(shù)據(jù)”和“寫入數(shù)據(jù)”三個(gè)菜單,并添加消息響應(yīng)函數(shù)OnPipeCreate()、OnPipeRead()和OnPipeWrite()。在CParentView類中添加成員變量handle類型的hr
2、ead和hwrite,初始化變量,并在析構(gòu)函數(shù)中釋放HANDLE:void cpparentview : OnPipewrite()如果(!創(chuàng)建管道()/*創(chuàng)建匿名管道*/*消息“未能創(chuàng)建管道!”*/*退出*/如果(!創(chuàng)建進(jìn)程()/*創(chuàng)建子進(jìn)程*/*關(guān)閉手柄hRead,hWrite*/*消息“未能創(chuàng)建子進(jìn)程!”*/*退出*/void cpparentview : OnPipeRead()/*定義用于存儲(chǔ)讀取數(shù)據(jù)的字符數(shù)組*/如果(!讀取文件()/*讀取數(shù)據(jù)*/*消息“讀取數(shù)據(jù)失??!”*/*退出*/*打印讀取的數(shù)據(jù)*/*退出*/void cpparentview : OnPipewrite()/
3、*定義用于存儲(chǔ)寫入數(shù)據(jù)的字符數(shù)組*/如果(!write file()/*寫入數(shù)據(jù)*/*消息“寫入數(shù)據(jù)失敗!”*/*退出*/B.子過程創(chuàng)建一個(gè)單一的子文檔,在CChildView中添加兩個(gè)成員變量hread和hwrite成員類型HANDLE,并添加消息響應(yīng)函數(shù)OnPipeRead()和OnPipeWrite(),然后添加虛擬函數(shù)OnInitialUpdate(),并釋放析構(gòu)函數(shù)中的句柄。void cchildview :3360 oninitialupdate()HRead=GetStdHandle()/*獲取標(biāo)準(zhǔn)輸入句柄*/HWrite=GetStdHandle()/*獲取標(biāo)準(zhǔn)輸出句柄*/vo
4、id cpparentview : OnPipeRead()/*定義用于存儲(chǔ)讀取數(shù)據(jù)的字符數(shù)組*/如果(!讀取文件()/*讀取數(shù)據(jù)*/*消息“讀取數(shù)據(jù)失??!”*/*退出*/*打印讀取的數(shù)據(jù)*/*退出*/void cpparentview : OnPipewrite()/*定義用于存儲(chǔ)寫入數(shù)據(jù)的字符數(shù)組*/如果(!write file()/*寫入數(shù)據(jù)*/*消息“寫入數(shù)據(jù)失敗!”*/*退出*/# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #父流程代碼# # # # # # # # # # # # # # # # #。無效cf
5、atherview : onpiece create()/在這里添加您的命令處理程序代碼SECURITY _ ATTRIBUTES sasa.bInheritHandle=真;sa.lpSecurityDescriptor=空;sa . nLength=sizeof(SECURITy _ ATTRIBUTES);如果(!創(chuàng)建管道(hRead,hWrite,sa,0)消息框(“未能創(chuàng)建管道!”);返回;STARTUPINFO sui過程信息pi;ZeroMemory(sui,sizeof(STARTUPINFO);/將數(shù)據(jù)清零sui . CB=sizeof(STARTUPINFO);sui .
6、dwflags=STARTF _ USESSTDANDLES;sui.hStdInput=hReadsui.hStdOutput=hWritesui . hstderror=GetStdHandle(STD _ ERROR _ HANDLE);如果(!create process( H : 操作系統(tǒng)作業(yè) 實(shí)驗(yàn)1_匿名管道通信 子 調(diào)試 子. exe ,null,null,null,true,0,null,null,sui,pi)closeHandle(HRead);關(guān)閉句柄(Hwrite);/關(guān)閉句柄,從內(nèi)核對(duì)象的使用計(jì)數(shù)中減去1,這樣當(dāng)操作系統(tǒng)找到內(nèi)核對(duì)象時(shí),當(dāng)/的使用計(jì)數(shù)為0時(shí),內(nèi)核對(duì)象將
7、被清除。hRead=空;hWrite=空;消息框(“未能創(chuàng)建子進(jìn)程!”);返回;其他closeHandle(pi . hpprocess);關(guān)閉句柄(pi . hthread);無效視圖:打開()/在這里添加您的命令處理程序代碼char buf100;DWORD dwRead如果(!ReadFile(hRead,buf,100,dwRead,NULL)消息框(“讀取數(shù)據(jù)失??!”);返回;消息框(buf);無效CFatherView:OnInput()/在這里添加您的命令處理程序代碼“你好,我是父進(jìn)程!”;DWORD dwWrite如果(!寫文件(hWrite,buf,strlen(buf) 1
8、,dwWrite,NULL)消息框(“寫入數(shù)據(jù)失??!”);返回;# # # # # # # # # # # # # # # # # # # # # # # # # #子流程代碼# # # # # # # # # # # # # # # # # # #。void cchildview : OnInput()/在這里添加您的命令處理程序代碼char buf100;DWORD dwRead如果(!ReadFile(hRead,buf,100,dwRead,NULL)消息框(“讀取數(shù)據(jù)失敗!”);返回;消息框(buf);void cchildview : onwrite()/在這里添加您的命令處理程序
9、代碼Char buf=“匿名管道測試器”;DWORD dwWrite如果(!寫文件(hWrite,buf,strlen(buf) 1,dwWrite,NULL)消息框(“寫入數(shù)據(jù)失?。 ?;返回;void cchildview :3360 oninitialupdate()cview : oninitialupdate();/在這里添加您的專用代碼和/或調(diào)用基類hRead=GetSTDhandle(STD _ INPUT _ HANDLE);hWrite=GetSTDhandle(STD _ OUTPUT _ HANDLE);四.實(shí)施結(jié)果和分析創(chuàng)建管道:父進(jìn)程向子進(jìn)程發(fā)送信息:子進(jìn)程向父進(jìn)程發(fā)
10、送信息:五、思考與收獲這是第一個(gè)計(jì)算機(jī)實(shí)驗(yàn)。我最初并沒有學(xué)習(xí)C語言,只是學(xué)習(xí)了C語言的編程基礎(chǔ)。當(dāng)我第一次接觸MFC的時(shí)候,我覺得編程很難。經(jīng)過我的導(dǎo)師多次耐心的示范和指導(dǎo),我終于能夠自己完成這個(gè)過程。我覺得很有收獲,主要是因?yàn)樵谶@些課上學(xué)到的知識(shí)在我的生活中很難接觸到。通過使用電腦,我可以真正用代碼操縱電腦的操作系統(tǒng)來工作,這縮小了理論和實(shí)踐之間的差距,讓我覺得課堂不再枯燥和空虛。這個(gè)實(shí)驗(yàn)給了我一個(gè)非常直觀的管道的感覺,這是一個(gè)進(jìn)程之間的通信方法。通過人機(jī)交互,我手動(dòng)選擇在進(jìn)程間發(fā)送和接收數(shù)據(jù),這加強(qiáng)了我對(duì)管道通信特點(diǎn)的理解(連接兩個(gè)進(jìn)程,以先進(jìn)先出的方式實(shí)現(xiàn)消息的單向傳輸)。實(shí)驗(yàn)二。創(chuàng)建過
11、程第一,實(shí)驗(yàn)?zāi)康膶W(xué)會(huì)使用基本的視窗或Linux進(jìn)程控制功能,由父進(jìn)程創(chuàng)建子進(jìn)程,實(shí)現(xiàn)父子進(jìn)程間的協(xié)作。二、實(shí)驗(yàn)內(nèi)容創(chuàng)建兩個(gè)進(jìn)程,讓子進(jìn)程讀取文件,父進(jìn)程等待子進(jìn)程讀取文件后繼續(xù)執(zhí)行,實(shí)現(xiàn)進(jìn)程間的協(xié)同工作。進(jìn)程協(xié)作是協(xié)調(diào)兩個(gè)進(jìn)程,使它們能夠按順序排列并相應(yīng)地執(zhí)行,這可以通過使用等待功能來實(shí)現(xiàn)。當(dāng)需要等待子進(jìn)程完成運(yùn)行時(shí),可以在父進(jìn)程中調(diào)用等待函數(shù)。假設(shè)現(xiàn)在有這樣一個(gè)作業(yè),需要計(jì)算1100的總和,而另一個(gè)作業(yè)是讀寫文件。我們可以讓父進(jìn)程計(jì)算并創(chuàng)建一個(gè)子進(jìn)程來讀寫文件。三、設(shè)計(jì)和實(shí)施過程主要工作: 1。首先,父進(jìn)程創(chuàng)建了一個(gè)子進(jìn)程 2。讓子進(jìn)程創(chuàng)建一個(gè)文件并寫入數(shù)據(jù)。當(dāng)子進(jìn)程寫入文件時(shí),父進(jìn)程繼續(xù)執(zhí)
12、行計(jì)算工作 3。子流程執(zhí)行完畢后,父流程讀取文件內(nèi)容并輸出,實(shí)現(xiàn)流程間的協(xié)同工作。父流程框架 void main() /準(zhǔn)備創(chuàng)建流程/創(chuàng)建子進(jìn)程如果(創(chuàng)建失敗)返回其他(創(chuàng)建成功)/計(jì)算1100的總和/子流程執(zhí)行完畢后,讀取子流程的文件內(nèi)容并輸出。 子流程框架 void main() /創(chuàng)建文件如果(失敗)返回其他(成功)/將數(shù)據(jù)寫入文件/讀取文件內(nèi)容輸出 # # # # # # # # # # # # # # # # # # # # # # # # #父流程代碼# # # # # # # # # # # # # #。int main()int I;int sum=0;字符讀取100= ;過程
13、信息pi;STARTUPINFO sui/創(chuàng)建過程的準(zhǔn)備零記憶(sui,sizeof(sui);sui . CB=sizeof(STARTUPINFO);如果(!create PRocESS( H : 操作系統(tǒng)作業(yè) 實(shí)驗(yàn)2_創(chuàng)建進(jìn)程 子 調(diào)試 子. exe ,null,null,null,false,create _ new _ console,null,null,sui,pi)返回0;Else/創(chuàng)建成功/父進(jìn)程繼續(xù)執(zhí)行對(duì)于(I=1;i=100I)sum=i。睡眠(10);printf(sum=%dn ,sum);WaitForSingleObject(pi . hpprocess,INDENTAL);FILE * pfile 1=fopen( H : 操作系統(tǒng)作業(yè) 實(shí)驗(yàn)2_創(chuàng)建過程kang.txt , r );fread(讀取,大?。ㄗ址?,100,pfile 1);/fread第二個(gè)參數(shù)是每個(gè)字符的大小/文件打開方式需改為可讀寫fc丟失(pfile 1);打印(%sn),已讀);返回0;# # # # # # # # # # # # # # # # # # # # # # # # # # #子進(jìn)程代碼# # # # # # # # # # # # # # # # # # # # # # # # # # #int main()char *目錄=你成
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店廚房承包合同范文
- 銷售總監(jiān)聘用合同
- 小型建筑承包合同模板
- 金融期貨合同年
- 酒店用品采購合同
- 抗轉(zhuǎn)發(fā)式干擾雷達(dá)信號(hào)設(shè)計(jì)與處理方法研究
- 勞動(dòng)合同終止通知書三篇
- 隱蔽通信中視覺內(nèi)容隱私保護(hù)方法研究
- 2025年北京貨運(yùn)從業(yè)資格證考試試題及答案
- 《股票投資培訓(xùn)提綱》課件
- 高考語文閱讀兒童視角的作用專項(xiàng)訓(xùn)練(含答案)
- 保障性住房配套公建工程項(xiàng)目可研報(bào)告
- 服務(wù)人員隊(duì)伍穩(wěn)定措施
- 支氣管鏡護(hù)理測試題
- 大連理工大學(xué)信封紙
- 圖形創(chuàng)意(高職藝術(shù)設(shè)計(jì))PPT完整全套教學(xué)課件
- 北京版小學(xué)英語必背單詞
- 藝術(shù)課程標(biāo)準(zhǔn)(2022年版)
- 2023年全國4月高等教育自學(xué)考試管理學(xué)原理00054試題及答案新編
- 稀土配合物和量子點(diǎn)共摻雜構(gòu)筑發(fā)光軟材料及其熒光性能研究
- JJG 921-2021環(huán)境振動(dòng)分析儀
評(píng)論
0/150
提交評(píng)論