操作系统实验四进程的管道通信实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大学实验报告
学院:计信学院专业:网络工程092班级:
实验步骤
编写程序实现进程的管道通信。用系统调用
P2分别向管道各写一句话:
Child 1 is sending a message!
Child 2 is sending a message!
父进程从管道中读出二个来自子进程的信息并显
示
pipe()建立一管道,二个子进程P1和
禾(要求先接收P1,后P2)。
程序部分:
#in elude
#in elude
in t pid1,pid2;
mai n()
{
int fd[2];
char outpipe[100],i npipe[100];
pipe(fd); /*创建一个管道*/
while ((pid1=fork( ))==_1);
if(pid1== { =0)
lockf(fd[1],1,0);
spri ntf(outpipe,"child 1 process is sending message!");
/*把串放入数组outpipe 中*/
write(fd[1],outpipe,50); /*向管道写长为50字节的串*/
sleep(5); /*自我阻塞5秒*/
实
lockf(fd[1],0,0); exit(0); 验}
else
内容
{
while((pid2=fork( ))==-1);
if(pid2= =0)
{ lockf(fd[1],1,0); /*互斥*/
spri ntf(outpipe,"child 2 process is sending message!");
}
write(fd[1],outpipe,50);
sleep(5); lockf(fd[1],0,0);
exit(0);
else
{ wait(0); /*同步*/
read(fd[0],i npipe,50);
prin tf("%s\n",i npipe);
wait(0);
read(fd[0],i npipe,50);
prin tf("%s\n",i npipe);
/*从管道中读长为50字节的串*/
}
}
exit(0);
}
九山工 跨第① K.i.h
桶朋01;
I# include
rw i nC )
(
ini fd[2]:
h ;i r ou ip ipe [ 100] t imp i pc [ IOO ]; pipMfdh "创證-叩營逍呼 At] L Ic { ( p ]dl = rci k( > )==-l ) i L f( p id I ==0) ]«ckf( fd[l], I .(D :
spr in t fl outp ipe / ch i IJ I p r c cc s s i 、 send nts sage -:; ”把川临入数组imtpipt 屮和 krite( fd[]).ovtpipe^C): 严囱管逋写K :为50字节的串时 s ktp (5)i 严冃我ER 務吕杪椁 lockf(fd[l].0.0)i PM
■A i le{ fpi-d2«rork( >} ■■-1); iJ(pid2—4>
1 lockft fd[ 1 I .1.0); 严互斥巧 jp 「im ff mit 卩 i 卩
2 pro ITS S M se nd inp nr s^aee ! *> < wr i tc(fd[I ].cutpipe ,S0); s kep( 5);
iDffkf'f fd[ : ] , (), 0 ): ex L t< IB j
}
e 1 ir
wy i t(0):
re J d ■- f d [ 0 1 H inp i pc * bl)); 治 in W 窮\nT »inp ipe );
[rool^ltica Iho^ t r oo I]gee tes I .c -o les t [rool^loraIhos t root]# ./test
child 1 process i send ing HE s 5 a gf! child 2 process iw se nding rre s sage! | [ rool^loca I hos t rotn]# ||
实 验 数 据
"同步*f /■从・道屮St 畏为帥字%的申•/
注:各学院可根据教学需要对以上栏木进行增减。表格内容可根据内容扩充。万豆体验卡卡号:50D890668267e3349e33 密码:686d03401eefba96faba 奖品名称:
500万U豆体验卡
卡号:50De7a00c543af387fc0 密码:b26488ce65abc1787202
奖品名称:500万U豆体验卡
卡号:50Dbac638
85c802fd52e
密码:3d1c344384327b85efff 奖品名称:500万U豆体验卡
卡号:50Dd97f0765bdf6998a3 密码:48db1c14e42a2b321fac 奖品名称:
500万U豆体50D61
215eb41ae3cc919
密码:25bffae5346e7b7d2548
奖品名称:100万U 豆体验卡
卡号:10D1cab621456ab278ab
密码:709f65f32865af2559c2
奖品名称:100万U 豆体验卡卡号:10D8f1d6a4b953f3474e 密码: