1 / 5
文档名称:

操作系统实验二(5)实验报告.doc

格式:doc   大小:70KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统实验二(5)实验报告.doc

上传人:miaoshen1985 2021/10/31 文件大小:70 KB

下载得到文件列表

操作系统实验二(5)实验报告.doc

文档介绍

文档介绍:烟台大学计算机学院
操作系统
实验报告书
班 级:计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