新-实验报告2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统
实验报告
课程名称操作系统及安全
实验学期 2014 至 2014 学年第二学期学生所在系部通信工程系
年级专业班级班
学生姓名学号
任课教师陈晨
实验成绩
通信工程系制
一、实验题目:
熟悉Linux IPC; 通过对signal的使用,为后续编写进阶调度程序和处理程序响应奠定基础。
二、实验设备及环境:
1. 硬件设备:PC机一台
2. 软件环境:安装Linux操作系统,并安装相关的程序开发环境,如C \C++\tsh\bsh等编程语言环境。
三、实验内容及要求:
(1)编写一个c程序,满足以下要求
●用系统调用列出所有的信号;(kill –l)
●用系统调用signal()让父进程捕捉键盘上来的中断信号(Ctrl-C);
●当捕捉到中断信号后,父进程用系统调用kill()向两个子进程发出信号,子进程捕
捉到信号后分别输出下列信息后终止
⏹Child Process 1 is Killed by Parent!
⏹Child Process 2 is Killed by Parent!
父进程等待两个子进程终止后,输出如下的信息后终止:Parent Process is Killed!
(2)编写一个C程序实现消息队列
●发送两条消息,父进程创建消息队列并发送,子进程接收;
●要使用waitpid回收子进程,防止僵尸进程;
●消息队列使用完回收消息id(msgctl)
●有精力将该程序扩展为不同机器上的两个分布式进程
(3)编写c程序实现共享内存操作
●程序1向共享内存写入键盘输入的数据;
●程序2从共享内存读取程序1的数据并打印;
●两个程序都使用while(1)循环执行,直到强制退出。
(4)将《linux c编程大全》第六章中信号量(灯)的程序照样编写一遍,完成结果分析。
四、实验方法内容
1.需要的头文件
#include
#include
#include
#include
#include
#include
2.主要的常量变量
struct msgbuf
{
long msgtype;
char msgtext[128];
};
int msgqid;
struct msqid_ds msgidds;
void delmsgqid(void);
3.主要模块
int main(void)
五.代码
六.实验结果
1.执行结果
a)实验1
b)实验2
c)实验3
子程序1
子程序2
d)实验4
未给出。
2.结果分析
评价教师签名: