实验6 进程的软中断通信(答案)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六Linux进程的软中断通信
一.实验目的
1、掌握Linux系统中软中断通信的实现方法
2、掌握Linux系统中进程通信的基本原理
3、学会使用Linux系统中关于进程通信的一些系统调用
二.实验内容及步骤
1.输入如下程序(实验指导P127),使用“gcc 文件名”指令编译并执行程序,
使用“./a.out”指令查看结果,输入两次“ctrl+c”后屏幕会显示输出。

多次运行程序,输出是否会有不同?分析产生这种不同的原因。

#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
int wait_flag;
void stop();
main() {
int pid1,pid2;
wait_flag=1;
signal(2,stop); //or signal(14,stop);
while(wait_flag==1);
while((pid1=fork())==-1);
if(pid1>0) {
while((pid2=fork())==-1);
if(pid2>0) {
wait_flag=1;
sleep(5);
kill(pid1,16);
kill(pid2,17);
wait(0);
wait(0);
printf("Parent process is killed !!\n");
exit(0);
}
else {
wait_flag=1;
signal(17,stop);
while(wait_flag==1);
printf("Child process 2 is killed by parent !!\n");
exit(0);
}
}
else {
wait_flag=1;
signal(16,stop);
while(wait_flag==1);
printf("Child process 1 is killed by parent !!\n");
exit(0);
}
}
void stop() {
wait_flag=0;
}
实验结果:
2.修改上述程序,添加第3个子进程,中断号可设为18。

写出修改后的程序。

三.实验讨论
谈谈你今天上实验课的收获,存在的问题或疑问。

如果有实验内容以外的发现也
可谈谈。

相关文档
最新文档