没有合适的资源?快使用搜索试试~ 我知道了~
09级操作系统课程设计报告书模版 -.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 22 浏览量
2023-05-22
13:04:46
上传
评论
收藏 580KB PDF 举报
温馨提示
试读
21页
09级操作系统课程设计报告书模版 -.pdf
资源推荐
资源详情
资源评论
.
word 版
.
题目 1 进程的软中断通信
1.1 题目的主要研究内容及预期到达的目标
〔1〕编制一个程序,使其实现进程的软中断通信。
〔2〕父进程发信号控制子程序的终止。
1.2 题目研究的工作根底或实验条件
〔1〕硬件环境:linux
〔2〕软件环境:标准 C 语言
1.3 设计思想
使用系统调用 fork()创立两个子进程,再用系统调用 signal()让父进程捕捉键
盘上的中断信号(即按 DEL 键);当捕捉到中断信号后,父进程用系统调用 Kill()
向两个子进程发出信号,子进程捕捉到信号后分别输出以下信息后终止:
Child Proeess 1 is Killed by Parent!
Child Process 2 is Killed by Parent!
父进程等待两个子进程终止后,输出如下的信息后终止:
Parent Process is Killed!
1.4 流程图如图〔1〕
word 版
.
开场
Fork 函数建立两个子进程,p1,p2
是否成功
N
Y
P1,p2 进程运行
N
等待 SIGQUIT
Y
信号
图(1):进程的软中断通信
word 版
完毕
显示结果,发出完毕
信号
Y
显示结果
等 待 16,17
信号
Y
N
分别向 p1,p2,发出 16,17 信
号
等待 p1,p2
完毕信号
N
.
1.5 主要程序代码
#include<stdio.h>
#include<signal.h>
#include<stdlib.h>
#include<sys/wait.h>
#include<sys/types.h>
int flag//信号标志
void stop(),waiting();
main()
{
int p1,p2;
if((p1=fork())==0)
{
flag=1;
signal(16,stop);signal(2, SIG_IGN);
waiting();//当 flag=1 时,waiting 方法不进展任何操作,不停循环,直到按下^c,调
用 stop()函数,使得 flag=0,跳出循环;
lockf(1,1,0);
printf("\nChild process 1 is killed by parent!\n");
lockf(1,0,0);
exit(0);//利用 exit( )来实现进程的自我终止,通常父进程在创立子进程时,
//应在进程的末尾安排一条 exit( ),使子进程自我终止。exit(0)表示进程正常终
止,exit(1)表//示进程运行有错,异常终止。
}
else{
if((p2=fork())==0){
flag=1;
signal(17,stop); signal(2, SIG_IGN);
waiting();
word 版
.
}
lockf(1,1,0);
printf("Child process 2 is killed by parent!\n");
lockf(1,0,0);
exit(0);
else{
flag=1;
}
void waiting()
{
}
void stop()
{
while(flag!=0);
}
}
signal(SIGINT,stop); //*接收到^c 信号,转 stop*
waiting();
kill(p1,16);/*向 p1 发软中断信号 58*/
wait(0);
kill(p2,17);/*向 p2 发软中断信号 59*/
wait(0);
printf("Parent process is killed!\n");
exit(0);
flag=0;
}
word 版
剩余20页未读,继续阅读
资源评论
hhappy0123456789
- 粉丝: 61
- 资源: 5万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功