操作系统 进程的管道通信
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机操作系统实验报告
学院:计算机学院
班级:102班
姓名:杨晓武
学号:101110118
座号:28
实验日期:2013-04-15
实验二进程的管道通信
一、实验目的
1.了解什么是管道;
2.熟悉UNIX/LINUX支持的管道通信方式。
二、实验内容
编写程序实现进程的管道通信。用系统调用pipe()建立一管道,两个子进程P1和P2分别向管道各写一句话:Child 1 is sending a message!
Child 2 is sending a message!
父进程从管道中读出两个来自子进程的信息并显示。
三、实验过程
1.用pipe()建立一无名管道,定义参数filedes[2],其中
filedes[1]是写入端,filedes[0]是读出端;
2.创建两个子进程pid1和pid2,使用write()函数向管
道写入内容;
3.父进程使用read()函数读出子进程写入管道的内容。
实现代码如下:
将上述代码命名为2.c并保存到主文件夹中,打开终端,使用gcc 2.c编译生成a.out,如图:
在终端输入./a.out运行程序,输出“Child1 is sending a message!”和“Child2 is sending a message!”,如图:
四分析与体会:
通过本次试验,我掌握了linux系统中管道通信的原理,了解了管道通信的特点,掌握了linux管道的相关函数的功能
及使用方法,并了解linux管道的创建和使用,学会了如何
利用管道实现进程间的通信,对进程间通信有了更深刻的
了解和掌握。熟悉UNIX/LINUX支持的管道通信方式,并
在程序中运用了pipe(),read()和write()等系统调用。验证了lockf的加锁解锁作用,并验证了读写进程互斥。