操作系统实验报告实验二:进程通信(一)——管道及共享内存一、实验目的•了解进程之中相互通信的方式•加深对管道通信的了解•了解共享内存通信的程序设计方法•了解和熟悉 Linux 支持的共享存储区机制二、实验内容和步骤任务一、(1)阅读以上父子进程利用管道进行通信的例子(例 1),写出程序的运行结果并分析
(2)编写程序:父进程利用管道将一字符串交给子进程处理
子进程读字符串,将里面的字符反向后再交给父进程,父进程最后读取并打印反向的字符串任务二、1)阅读例 2 的程序,运行一次该程序,然后用 ipcs 命令查看系统中共享存储区的情况,再次执行该程序,再用 ipcs 命令查看系统中共享内存的情况,对两次的结果进行比较,并分析原因
最后用ipcrm 命令删除自己建立的共享存储区
(有关 ipcs 和 ipcrm 介绍见后面一页)(2)每个同学登陆两个窗口,先在一个窗口中运行例 3 程序 1(或者只登陆一个窗口,先在该窗口中以后台方式运行程序 1),然后在另一个窗口中运行例 3 程序 2,观察程序的运行结果并分析
运行结束后可以用 ctrl+c 结束程序 1 的运行
(3)编写程序:使用系统调用shmget(),shmat(),shmdt(),shmctl(),编制程序
要求在父进程中生成一个 30 字节长的私有共享内存段
接下来,设置一个指向共享内存段的字符指针,将一串大写字母写入到该指针指向的存贮区
调用 fork()生成子进程,让子进程共享内存段中的内容
接着,将大写字母改成小写,子进显示程修改共享内存中的内容
之后,子进程将脱接共享内存段并退出
父进程在睡眠 5 秒后,在此显示共享内存段中的内容(此时已经是小写字母)
三、代码及运行结果分析1
任务 1(1)① 代码:#include#include#include#include#include#includeintmai