操作系统实验报告进程的管道及消息通信_第1页
操作系统实验报告进程的管道及消息通信_第2页
操作系统实验报告进程的管道及消息通信_第3页
操作系统实验报告进程的管道及消息通信_第4页
操作系统实验报告进程的管道及消息通信_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验题目姓名进程的管道及消息通信班级小组合作学号否一、实验目的1、为了掌握 linux 进程通信系统调用的功能, 这里给出了进程通信实现机制中使用的系统调用命令的格式和如何利用系统调用命令进行进程通信编程, 以便通过学习, 提高学生对进城通信系统调用的编程能力。2、理解进程通信的原理,掌握管道通信机制,熟悉无名管道和有名管道通信的实现。二实验环境Windows xp、VMware、Linux 系统三、实验内容与步骤(1)编写两个程实现进程的无名管道和有名管道通信。要求分别调用 pipe()、close()、write() 、read()、popen()、pclose()、mknod()、mkf

2、ifo() 、open()实现多个进程间的通信。(2)调试并分析结果。对观察到的内容做详细记录分析,并写出实验报告。四、实验过程与分析1.使用无名管道pipe(),进行父子进程之间的通信。编写的程序如下:运行结果如下:结果分析:父进程首先被调用时,运行结果为:之后父进程阻塞等待子进程终止, 当系统调度子进程运行时, 输出如下的信息:之后父进程被唤醒,调度运行,输出如下结果后程序退出。对于以上的结果:首先父进程使用 pipe(chan1)系统调用打开一个无名管道,之后创建一个子进程。子进程复制父进程的打开文件表。为了正确通信,父进程关闭读通道 close(chan10),子进程关闭写通道 clo

3、se( chan11)。父进程向管道写,子进程从管道读。完成一次通信之后,父进程分别关闭自己的写 /读通信,管道文件消失。2.以命名行为参数的管道文件的示例。 ( 假设有一个可执行程序chcase,从标准输入设备读字符, 将小写字母转化成大写字母并输出。主程序使用 popen创建管道,实现蒋某文本文件中的字幕转化成大写字母,其中的文本文件名作为参数传进来。 )编写的程序如下:运行结果是:结果分析:通过程序运行结果可知,先打开文本文件,如果文本打开失败,则执行 exit(1),退出程序,如果文本通过函数开成功, 则 popen创建一个可写管道,将命令行chcase的输入与管道的输入连接起来,然后

4、向管道输入数据, 此时命令行就可以通过管道接受文本文件的数据了 ,在从文件中读出数据时,独处的内容放在line 数组中 ,fpin 表示从刚打开的文件里读出。 之后要编写字母大小写转化函数,来实现小写字母转化成大写字母。3.创建有名管道。编写的程序如下:运行结果是:前台运行结果:后台运行结果:结果分析:此程序是把管道和命令联系起来, read( )的系统调用格式是 read(fd,buf,n),参数定义是 int read(fd,buf,n); int fd; char *buf; unsigned n;它的功能是从 fd 所指示的文件中读出 n 个字节的数据,并将它们送至由指针 buf 所指

5、示的缓冲区中。 如该文件被加锁,等待,直到锁打开为止; write( ) 系统调用格式是 read(fd,buf,n),它的功能是把 n 个字节的数据,参数定义同 read( ),而父进程则从管道中读出来自两个进程的信息, 显示在屏幕上。 从 buf 所指向的缓冲区写到由 fd所指向的文件中。程序中的string0+=1 表示字符串中的第一个字符的 ASCII 加 1对以上程序的整体分析:管道是单向的、 先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据,管道包括无名管道和有名管道两种,前者用于父进程和子进程间的通信, 后者可用于运行于同一系统中的任意两个进程间的通信。五、实验总结通过这次实验使我掌握理解了进程通信的原理, 掌握管道通信机制和 l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论