Young87

当前位置:首页 >个人收藏

linux 进程通信实验报告,Linux软中断通信实验报告.doc

Linux软中断通信实验报告

实验2 Linux软中断通信

1.实验目的

通过本实验,掌握软中断的基本原理;掌握中断信号的使用、进程的创建以及系统计时器的使用。

2.实验内容(上交的实验2统一取名为:test2

由父进程创建两个子进程,通过终端输入Crtl+\组合键向父进程发送SIGQUIT软中断信号或由系统时钟产生SIGALRM软中断信号发送给父进程;父进程接受到这两个软中断的其中某一个后,向其两个子进程分别发送整数值为16和17软中断信号,子进程获得对应软中断信号后,终止运行;父进程调用wait 函数等待两个子进程终止,然后自我终止。

3. 设计思想及算法流程

4. 源程序

#include

#include

#include

#include

#define SEC 5

void waiting ;

void stop ;

int wait_mark;

int main int p1, p2; /*定义两个进程号变量*/

while p1 fork -1 ; /*循环创建进程至成功为止*/

if p1 0 while p2 fork -1 ; /*循环创建进程至成功为止*/ if p2 0 wait_mark 1; alarm SEC ; signal SIGQUIT, stop ; signal SIGALRM, stop ; waiting ; kill p1, 16 ; kill p2, 17 ; wait 0 ; wait 0 ; printf "Parent process is killed!\n" ; exit 0 ; else signal SIGQUIT, SIG_IGN ; signal SIGALRM, SIG_IGN ; wait_mark 1; signal 17, stop ; /*接收到软中断信号17,转stop*/ waiting ; /*在wait置0前,不可往下执行*/ lockf 1, 1, 0 ; /*加锁*/ printf "Child process 2 is killed by parent!\n" ; lockf 1, 0, 0 ; /*解锁*/ exit 0 ; /*子进程2退出*/ else signal SIGQUIT, SIG_IGN ; signal SIGALRM, SIG_IGN ; wait_mark 1; /*将等待标记置1直到中断信号刺激stop*/ signal 16, stop ; /*接收到软中断信号16,转stop*/ waiting ; /*在wait置0前,不可往下执行*/ lockf 1, 1, 0 ; printf "Child process 1 is killed by parent!\n" ;/*接收到父进程发送信号后,父进程杀死子进程1*/ lockf 1, 0, 0 ; /*解锁*/ exit 0 ; /*子进程1退出*/ return 0; void waiting while wait_mark ! 0 ; void stop wait_mark 0; 5.运行结果

Fork函数建立两个子进程,p1,p2

是否成功

分别向p1,p2,发出16,17信号

等待SIGQUIT信号

P1,p2进程运行

等待16,17信号

开始

显示结果,发出结束信号

等待p1,p2结束信号

显示结果

结束

N

Y

N

Y

Y

Y

N

N

N

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 基于Django开发的学生信息管理系统

下一篇: 【删库不跑路】—Linux系统自杀实验 rm -rf /* 及如何抢救和预防

精华推荐