文档介绍:烟台大学计算机学院
操作系统
实验报告书
班 级:计114-3班
姓 名:刘镇
学 号:201158504337
日期:2013-6-7
《计算机操作系统》实验报告
实验内容
()进程的管道通信
二、实验目的
(1)加深对进程概念的理解,明确进程和程序的区别。
(2)进一步认识并发执行的实质。
(3)分析进程竞争资源现象,学****解决进程互斥的方法。
(4)了解Linux系统中进程通信的基本原理。
实验题目
编制一段程序,实现进程的管道通信。使用系统调用pipe()建立一条管道线。两个子进程p1和p2分别向通道个写一句话:
child1 process is sending message!
child2 process is sending message!
而父进程则从管道中读出来自两个进程的信息,显示在屏幕上。
四、设计思路和流程图
开始
初始化变量
创建子进程Pid1
是否成功?
是
否
写入管道
打印
当前是父进程?
否
是
创建子进程Pid2
是否成功?
是
否
当前是父进程?
否
写进管道
打印
是
从管道中读串
打印
结束
五、源程序:
#include <>
#include <>
#include <>
#include ""
int pid1,pid2;
main( )
{
int fd[2];
char outpipe[100],inpipe[100];
pipe(fd);
while ((pid1=fork( ))==-1);
if(pid1==0)
{
lockf(fd[1],1,0);
sprintf(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); /*互斥*/
sprintf(outpipe,"child 2 process is sending message!");
wri