操作系統(tǒng) 試驗32_第1頁
操作系統(tǒng) 試驗32_第2頁
操作系統(tǒng) 試驗32_第3頁
操作系統(tǒng) 試驗32_第4頁
操作系統(tǒng) 試驗32_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

本文格式為Word版,下載可任意編輯——操作系統(tǒng)試驗32青島科技大學(xué)實驗報告

2023年11月21日

姓名王茂林專業(yè)集成電路班級111同組者

課程操作系統(tǒng)試驗項目試驗3.2無名管道通信

一、試驗?zāi)康模?/p>

1、了解管道通信機制的基本原理。

2、把握父子進(jìn)程使用無名管道通信的方法。二、試驗內(nèi)容

1、父子進(jìn)程基于無名管道的簡單通信。

2、編寫程序說實現(xiàn)多個進(jìn)程基于無名管道進(jìn)行通信。三、試驗步驟及結(jié)果:

1、啟動windows下已經(jīng)安裝好的VMware虛擬機進(jìn)入linux系統(tǒng)2、等待系統(tǒng)初始化完畢后啟動命令終端3、閱讀試驗指導(dǎo)書

4、運行以下程序,觀測程序運行結(jié)果:

/*pipe1.c*/

#include#include#include#include#include#include#includemain()

{

intfd[2],pid,n;

charoutpipe[50],inpipe[50];pipe(fd);pid=fork();if(pid==0){

sprintf(outpipe,\lockf(fd[1],1,0);

write(fd[1],outpipe,strlen(outpipe));lockf(fd[1],0,0);

printf(\}else{

wait(0);

lockf(fd[0],1,0);

n=read(fd[0],inpipe,25);lockf(fd[0],0,0);

printf(\}}

編譯運行結(jié)果如下:

在本試驗中,首先創(chuàng)立管道,之后父進(jìn)程使用fork()函數(shù)創(chuàng)立子進(jìn)程,最終通過關(guān)閉父進(jìn)程的讀描述符fd[0]和子進(jìn)程的寫描述符fd[1]來建立一個\父進(jìn)程寫入子進(jìn)程讀取\的管道,從而建立起它們之間的通信。

5、運行以下同一個進(jìn)程樹的兄弟進(jìn)程通信程序,觀測程序執(zhí)行結(jié)果。

#include#include#include#include#include#include#includemain(){

intfd[2],pid,pir,n,i;

charsend[50]=\pipe(fd);pid=fork();if(pid==0){

while(send[0]!='a'){

printf(\scanf(\lockf(fd[1],1,0);

write(fd[1],send,strlen(send));lockf(fd[1],0,0);sleep(1);}}else{

pir=fork();if(pir==0){

while(receive[0]!='a'){

lockf(fd[0],1,0);

n=read(fd[0],receive,20);lockf(fd[0],0,0);

printf(\}}else{

wait(0);wait(0);

printf(\}}}

編譯運行結(jié)果如下所示:

在上述程序中,父進(jìn)程先創(chuàng)立管道,再創(chuàng)立兩個子進(jìn)程。第一個子進(jìn)程把從鍵盤接收到的信號寫入無名管道,當(dāng)從鍵盤接收到首字母為‘a(chǎn)’的信息時終止。其次個子進(jìn)程從無名管道中讀取數(shù)據(jù),當(dāng)從無名管道中讀出的首字母為‘a(chǎn)’時終止。父進(jìn)程利用wait(0),等待兩個子進(jìn)程運行終止后,輸出“parentiskill〞退出程序。

6、編寫程序?qū)崿F(xiàn)多個進(jìn)程基于無名管道進(jìn)行通信。用系統(tǒng)調(diào)用pipe()建立一個無名管道,實現(xiàn)兩個子進(jìn)程p1和p2分別向管道寫入一句話:

Child1issendingamessage!Child2issendingamessage!

父進(jìn)程從無名管道中讀出兩個來自子進(jìn)程的信息并顯示。

#include#include

#include#include#include#include#includemain(){

intfd[2],pid1,pid2,n1,n2;

charoutpipe1[100],inpipe1[100];charoutpipe2[100],inpipe2[100];pipe(fd);pid1=fork();pid2=fork();

if(pid1==0

write(fd[1],outpipe1,strlen(outpipe1));lockf(fd[1],0,0);lockf(fd[1],1,0);

write(fd[1],outpipe2,strlen(outpipe2));lockf(fd[1],0,0);

printf(\printf(\}else{

wait(0);

lockf(fd[0],1,0);

n1=read(fd[0],inpipe1,100);

printf(\lockf(fd[0],0,0);lockf(fd[0]

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論