计算机操作系统有名管道通信

上传人:飞*** 文档编号:44826553 上传时间:2018-06-14 格式:DOC 页数:3 大小:35KB
返回 下载 相关 举报
计算机操作系统有名管道通信_第1页
第1页 / 共3页
计算机操作系统有名管道通信_第2页
第2页 / 共3页
计算机操作系统有名管道通信_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《计算机操作系统有名管道通信》由会员分享,可在线阅读,更多相关《计算机操作系统有名管道通信(3页珍藏版)》请在金锄头文库上搜索。

1、计算机操作系统计算机操作系统实验报告实验报告实验题目进程的管道通信实验一、实验目的1、了解什么是管道 2、熟悉 UNIX/LINUX 支持的管道通信方式 3、通过进程多次的循环读写学习利用管道进行进程间的通信 4、验证 lockf 的加锁解锁作用5、验证读写进程本身是否已经实现了互斥作用三、实验过程编写程序实现进程的管道通信。用系统调用 pipe( )建立一管道,二个子进程 P1 和 P2 分别 向管道各写一句话:Child P1 is sending a message!Child P2 is sending a message! 父进程从管道中读出二个来自子进程的信息并显示(要求先接收 P

2、1,后 P2) 。 延迟 5 秒后显示 child 1 process is sending message!再延迟 5 秒child 2 process is sending message! 并实现循环 5 次读写 程序如下:程序如下:#include int pid1, pid2, i=0; int main( ) int fd2; char OutPipe100,InPipe100; pipe(fd);while(pid1 = fork() = -1); if(pid1 = 0) printf(“nChild1n“); lockf(fd1, 1, 0);int i;for(i=0;i5

3、;i+)sprintf(OutPipe, “n Child process %d is sending message!n“,i);write(fd1, OutPipe, 50);sleep(5);lockf(fd1, 0, 0);exit(0); else while(pid2 = fork() = -1);if(pid2 = 0)printf(“nChild2n“);lockf(fd1, 1, 0);int j;for(j=0;j5;j+)sprintf(OutPipe, “n Child process %d is sending message!n“,j);write(fd1, Out

4、Pipe, 50);sleep(5);lockf(fd1, 0, 0);exit(0); else printf(“nFather1n“);int p;for(p=0;p5;p+)read(fd0, InPipe, 50); printf(“%sn“, InPipe); printf(“nFather2n“);int q;for(q=0;q5;q+)read(fd0, InPipe, 50); printf(“%sn“, InPipe); exit(0); return 0; 分析与体会: 1、通过本实验,我了解到所谓管道,是指能够连接一个写进程和一个读进程、并允许它们以生 产者消费者方式进行通信的一个共享文件,又称为 pipe 文件。由写进程从管道的写入端(句柄 1)将数据写入管道,而读进程则从管道的读出端(句柄 0)读出数据。并知道 pipe 文件的建立。 2、熟悉 UNIX/LINUX 支持的管道通信方式,并在程序中运用了 pipe() ,read()和 write() 等系统调用。 3、验证了 lockf 的加锁解锁作用,并验证了读写进程互斥。 4、进程中 sleep(5)的作用是让所显示的内容休眠 5 秒钟,即等待 5 秒钟再显示。进程 1 和进 程 2 也能对管道进行操作,因为他们同属于共同的管道,共同共享资源。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号