操作系统实验报告
院系:计算机系
姓名:
学号:10
专业:科学技术
年级:10
实验题目:管道通信实验
一、 实验目的(包括:实验内容、实验原理、实验目标)
1、 了解管道的基本概念
2、 掌握Linux支持的管道通信方式
二、 实验设计(包括:设计思路、数据结构、程序流程图、关键代码说明)
本实验利用管道通信机制,实现输入字符串的自动分流操作。一共涉及3个管道,4个进程。P1:从键盘接受输入字符串,写入管道pipe1
P2:从pipe1接受字符串,若字符串的长度为偶数,则将其写入管道pipe2,负责写入管道pipe3.P3:从pipe2读出字符串,并显示pipe2Even length string:偶长度字符串。P4:从pipe3读出字符串,并显示pipe3Old length string:奇长度字符串。输入exit程序退出,示意图如下图1.1
                                      pipe2
          pipe1                                    P3
  P1                P2
                                      pipe3          P4
                    1.1 管道示意图
管道的创建是有系统调用pipe0函数实现的,其原型为:
#include<unistd.h>
int pipe(int fds[2])
管道命令的格式为:
pipe(fds);
int fds[2];
P1创建子进程P2
r=fork();
if(r)      //p2执行
{
  close(d1[1]);    //p1必须关闭写
进程间通信管道  read(d1[0],buff,sizeof(buff));    //p2pipe1中读信息
  if(strlen(buff)%2==1)      //判断字符串长度,若为奇数
  {
j=fork();              //创建子进程P3
if(j)                  //P3执行
}
}
三、 实验结果(包括:运行结果、结果分析)
Please input a string: apple
P2 finishes writing to pipe2.
P3 pipe2 odd length string:apple
Please input a string: pear
P2 finishes writing to pipe3.
P4 pipe3 even length string:pear
四、 实验总结(包括:实验效果分析、心得体会、遗留问题)
本实验基本成功,实验验证结果正确。通过本实验了解了通道的基本概念:通道是Linux进程通信的手段之一,Linux使用的管道分为两种:无名管道和有名管道,两种管道在内部结构上是一致的,只是使用的方法不同。通过实验还了解到管道实现进程间通信的条件是通信进程之间具有相同的祖先进程,并且管道已由祖先进程建立。
教师评语
成绩:              教室签名:                       

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。