linux 进程通信实验报告,Linux软中断通信实验报告.doc
日期: 2021-04-29 分类: 个人收藏 541次阅读
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
精华推荐