lockf(fd[1], 0, 0); /* 释放管道写入端 */ exit(0); /* 关闭P1*/ }
else /* 从父进程返回,执行父进程 */ {
while ((p2=fork())==-1); /* 创建子进程P2,失败时循环 */ if (p2==0) /* 从子进程P2返回,执行子进程P2 */ {
lockf(fd[1], 1, 0); /* 锁定写入端 */
sprintf(buf, \ printf(\
write(fd[1], buf, 50); /* 把buf中的字符写入管道 */ sleep(5); /* 睡眠5秒,让父进程读 */ lockf(fd[1], 0, 0); /* 释放管道写入端 */ exit(0); /* 关闭P2*/ }
wait(0);
if ((r=read(fd[0], s, 50))== -1) printf(\ else printf(\ wait(0);
if ((r=read(fd[0], s, 50))== -1) printf(\ else printf(\ exit(0); } }
/*exp1-2.c*/
#include
void ppdo(); void p1do(); void p2do();
signal(SIGINT,ppdo); p1=fork(); if(p1==0) {
signal(SIGUSR1,p1do); for(;;);
5
} else {
p2=fork(); if(p2==0) {
signal(SIGUSR2,p2do); for(;;); } }
wait(0); wait(0);
printf(\ exit(0); }
void ppdo() {
kill(p1,SIGUSR1); kill(p2,SIGUSR2); }
void p1do() {
printf(\ exit(0); }
void p2do() {
printf(\ exit(0); }
六、程序运行结果及分析
实验1管道通信运行结果截图
6
实验1管道通信结果分析
父进程建立后,创建了子进程P1,P2,然后P1,P2分别向管道中写入字符串“Child process p1 is sending message!”和“Child process p2 is sending message!”,父进程从管道中读取字符串。
实验2软中断通信运行结果截图
7
实验2软中断通信结果分析
先预设中断信号SIGINT,再先后创建子进程P1和P2,预设中断信号SIGUSR1,SIGUER2,当我们按下“Ctrl+C”时,父进程发出中断信号SIGUSR1和SIGUSR2,通知子进程P1和P2,子进程捕捉到信号后分别输出相应的信息后,终止,最后输出“Parent process is killed!”后终止。
实验后思考:
通过这次实验,深刻地了解到了管道通信和软中断通信的详细过程,深化了老师课堂上的讲解,对整个过程的把握也更加清晰了。
很值得的一次学习经历,做完实验,再画流程图,程序运行的细节熟悉于心,了如指掌。
七.指导教师评议 成绩等级
8
实验2 进程通信
一、实验目的
1. 了解进程间通信IPC的三种方式:消息队列、共享内存和信号量。 2. 掌握使用消息队列进行进程间通信的有关系统调用和编程方法。 3. 掌握使用共享内存进行进程间通信的有关系统调用和编程方法。
二、实验内容
1. 消息队列
使用系统调用msgget( )、msgsnd( )、msgrcv( )和msgctl( ),用消息队列机制实现客户进程和服务器进程间的通信。客户进程首先建立一个描述符为msgqid的消息队列,接着向服务器进程发送一个消息正文为自己的进程标识pid且类型为1的消息,然后接收来自服务器进程的消息,并在屏幕上显示:“Client receives a message from xxxx!”,其中“xxxx”为服务器进程的进程标识。服务器进程首先捕捉软中断信号(除不能捕捉的SIGKILL),若捕捉到时则调用函数cleanup( )删除消息队列,终止服务器进程。否则重复下列操作:接收所有类型为1的消息,并在屏幕上显示:“Server receives a message from xxxx!”,其中“xxxx”为客户进程的进程标识;然后服务器进程将客户进程的进程标识作为返回消息的类型,而将自己的进程标识作为消息正文发送给客户进程。 2. 共享内存
使用系统调用shmget( )、shmat( )和shmctl( ),用共享内存机制实现进程间的通信。其中一个进程向共享内存中写入数据,另一个进程从共享内存中读出数据并显示在屏幕上。
三、实验要求
1. 根据实验内容编写C程序。 2. 上机调试程序。
3. 记录并分析程序运行结果。
四、程序说明和程序流程图
实验1消息队列流程图
9
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作系统原理实验报告(2)在线全文阅读。
相关推荐: