实验八进程通信管道

实验八进程通信管道

ID:22281228

大小:381.96 KB

页数:8页

时间:2018-10-28

实验八进程通信管道_第1页
实验八进程通信管道_第2页
实验八进程通信管道_第3页
实验八进程通信管道_第4页
实验八进程通信管道_第5页
资源描述:

《实验八进程通信管道》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、浙江大学城市学院实验报告课程名称操作系统原理实验实验项目名称实验八进程通信——管道学生姓名专业班级学号实验成绩指导老师(签名)日期注意:•务请保存好各自的源代码,已备后用。•完成本实验后,将实验报告上传ftp。如没有个人文件夹,请按学号_姓名格式建立。•文件名为:学号_姓名_实骑XX,如30801001_XXXX_实验01一、实验目的和要求1.了解Linux系统的进程间通信机构(IPC);2.理解Linux关于管道的概念;3.掌握Linux支持管道的系统调用和管道的使用;4.巩固进程同步概念。二、实

2、验内容用系统调用pipe()创建管道,实现父子进程间的通信。三、实验步骤1、并发进程的无管道通信1)编译运行给出的pipel.c,观察运行结來。L卜)-gedlt-axFileEditViewSearchToolsDocumentsHelpNewOpenSavePrint...UndjRedoCLitC0

3、PasteFindReplaceLn1,Col4INSGgyessimidagedit,ApplicationsPlacesSystem

4、O10:25PMyessimfda@localhost:~

5、FileEditViewTerminalTabsHelp[yessimida(aiocalhost~]$./p12[yessimida(aiocalhost〜]$■2(~)•gedit單■■iQ10:26PM0)))[^]三[■yessimida@local...

6、SByessimida4^ApplicationsPlacesSystemFileEditViewSearchToolsDocumentsHelp@□aNewOpenSavePrint…令$UndoRedoOGPasteFindRepla

7、ceC/2x)213Ln1,Col1INS[yessimida@loc…

8、®yessimida(~)-gedit画国国FileEditViewSearchToolsDocumentsHelp□a今令1gNewOpenSavePrint…geditutPasteFindReplaceC?2xQlx123

9、INSLn1,Col41(~)-gedityessimida@local"7][演yessimida2)思考:观察程序运行结果,比较新旧文件的内容是否有差异,并分析原因脊差异,把1屮的数字逐个读入到2

10、屮似是顺序会改变。2、多进程的管道通信,编译并运行给出的代码pipe3.c,观察并理解多进程通过管道通信。4^ApplicationsPlacesSystemQ10:28PMOJ)3、编写程序:(来自第三章习题)假定系统冇三个并发进程read,move和print共享缓冲器B1和B2。进程read负责从输入设备上读信息,每读出一个记录后把它存放到缓冲器B1中。进程move从缓冲器B1中取出一个记录,加工后存入缓冲器B2。进程print将B2中的记录取出打印输出。缓冲器B1和B2每次只能存放一个记录。

11、要求三个进程协调完成任务,使打印出来的与读入的记录的个数,次序完全-•样。试创建三个进程,用pipe()打开两个管道,如错误!未找到引用源。所示,实现三个进程之间的同步。进程1进程2进程3程序源码:#include〈unistd.h〉#includc<$ignal.h>#includeintpidl,pid2;main(){intfdl[2];intfd2[2];charoutpipe[1OO],inpipe[100];pipe(fdl);pipc(fd2);/*创建两个管道whi

12、le((pidl=fork())==-l);if(pidl==0){while((pid2=fork())==-1);if(pid2==0){lockf(fdl[l],l,0);/*把输出串放入数组outpipe屮*/sprintf(outpipe,"copythat!");write(fdl[ll,outpipe,50);/*向管道写K:为50字节的串sleep(3);产自我阻塞3秒*/lockf(fdl[l],0,0);return0;}else{wait(0);/*同步*/read(fdl[0

13、],inpipe,50);/*从管道中读长为50字节的串*/printf("son:%s",inpipe);lockf(fd2[l],l,0);/*互斥*/writc(fd2[l],inpipe,50);slccp(l);lockf(fd2[l],0,0);return0;)}else{wait(0);/*同步*/read(fd2[0],outpipe,50);/*从管道巾读长为50字节的串printf("father:%sn,outpipe);return0

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。