365文库
登录
注册
2

操作系统 实验3.2--3.3

244阅读 | 11收藏 | 6页 | 打印 | 举报 | 认领 | 下载提示 | 分享:
2
操作系统   实验3.2--3.3第1页
操作系统   实验3.2--3.3第2页
操作系统   实验3.2--3.3第3页
操作系统   实验3.2--3.3第4页
操作系统   实验3.2--3.3第5页
操作系统   实验3.2--3.3第6页
福利来袭,限时免费在线编辑
转Pdf
right
1/6
right
下载我编辑的
下载原始文档
收藏 收藏
搜索
下载二维码
App功能展示
海量免费资源 海量免费资源
文档在线修改 文档在线修改
图片转文字 图片转文字
限时免广告 限时免广告
多端同步存储 多端同步存储
格式轻松转换 格式轻松转换
用户头像
灼灼其华 上传于:2024-06-06
青 岛 科 技 大 学 实 验 报 告 姓名 王茂林 专业 集成电路 班级 111 同组者 课程 操作系统 实验项目 实验 3.2 无名管道通信 实验目的: 1、了解管道通信机制的基本原理。 掌握父子进程使用无名管道通信的方法。 实验内容 父子进程基于无名管道的简单通信。 编写程序说实现多个进程基于无名管道进行通信。 实验步骤及结果: 1、启动windows下已经安装好的VMware虚拟机进入linux系统 2、等待系统初始化完毕后启动命令终端 3、阅读实验指导书 4、运行以下程序,观察程序运行结果:  /* pipe1.c */ #include #include #include #include #include #include #include main() { int fd[2],pid,n; char outpipe[50],inpipe[50]; pipe(fd); pid=fork(); if(pid==0) { sprintf(outpipe,"I am child process"); lockf(fd[1],1,0); write(fd[1],outpipe,strlen(outpipe)); lockf(fd[1],0,0); printf("child process writes %d bytes: %s
",strlen(outpipe),outpipe); } else { wait(0); lockf(fd[0],1,0); n=read(fd[0],inpipe,25); lockf(fd[0],0,0); printf("parent process %d reads %d bytes: %s
",getpid(),n,inpipe); } } 编译运行结果如下:  在本实验中,首先创建管道,之后父进程使用 fork()函数创建子进程,最后通过关闭父进程的读描述符fd[0]和子进程的写描述符fd[1]来建立一个"父进程写入子进程读取"的管道,从而建立起它们之间的通信。 运行以下同一个进程树的兄弟进程通信程序,观察程序执行结果。  #include #include #include #include #include #include #include main() { int fd[2],pid,pir,n,i; char send[50]="b",receive[50]="b"; pipe(fd); pid=fork(); if(pid==0) { while(send[0]!='a') { printf("Child1 inputs information from keyboard:
"); scanf("%s",send); lockf(fd[1],1,0); write(fd[1],send,strlen(send)); lockf(fd[1],0,0); sleep(1); } } else { pir=fork(); if(pir==0) { while(receive[0]!='a') { lockf(fd[0],1,0); n=read(fd[0],receive,20); lockf(fd[0],0,0); printf("Child2 received:%s
",receive); } } else { wait(0); wait(0); printf("parent is kill!
"); } } } 编译运行结果如下所示:  在上述程序中,父进程先创建管道,再创建两个子进程。第一个子进程把从键盘接收到的信号写入无名管道,当从键盘接收到首字母为‘a’的信息时结束。第二个子进程从无名管道中读取数据,当从无名管道中读出的首字母为‘a’时结束。父进程利用wait(0),等待两个子进程运行结束后,输出“parent is kill”退出程序。 编写程序实现多个进程基于无名管道进行通信。用系统调用pipe()建立一个无名管道,实现两个子进程p1和p2分别向管道写入一句话: Child 1 is sending a message! Child 2 is sending a message! 父进程从无名管道中读出两个来自子进程的信息并显示。  #include
下载二维码
网站备案:鄂ICP备2021004464号 网络文化经营许可证:鄂网文[2024]95956-12号
© 2009-2023 www.365docx.com All rights reserved 版本号:1.2.1.154
开发者:武汉妙游互动信息技术有限公司 免责声明:本站文档为网友上传,如有侵权,请联系删除
地址:武汉东湖新技术开发区凌家山南路1号武汉光谷企业天地4号楼12层03室(自贸区武汉片区)
服务条款 免责声明 隐私政策 侵权处理
下载二维码
tj