实验四 软中断信号及处理
创始人
2024-02-06 02:33:05
0

1.利用sleep、pause、alarm函数设定闹钟,定时显示信息。

#include
#include
#include
#include
int main(){int ret;alarm(50);sleep(30);ret=alarm(10);printf("%d\n",ret);pause();printf("I have been waken up.\n"); 
}

阅读并运行程序并回答以下问题:
问题1:红色部分的含义是什么?此时alarm还剩下多少时间?
发出SIGALRM信号,10s
问题2:蓝色部分的含义是什么?
挂起进程,直到捕捉到一个信号
问题3:程序的运行结果是什么,为什么运行结果中没有最后一个printf语句的输入内容?
在这里插入图片描述

因为进程没有被唤醒就被终止了
问题4:请在该程序上添加一个signal()函数捕捉信号,并进行信号处理,使程序显示“I have been waken up”。

#include
#include
#include
#include
int main(){int ret;alarm(50);sleep(30);ret=alarm(10);printf("%d\n",ret);signal(SIGALRM,alarm);pause();printf("I have been waken up.\n"); 
}

2.父进程通过kill()向子进程发送信号

#include 
#include 
#include 
#include 
#include 
#include 
int main(){ pid_t pid; pid=fork(); if(pid<0){ perror("fork() error\n");  } if(pid==0){printf("child process wait for signal!\n"); pause();}else{ sleep(3); kill(pid,SIGKILL);	printf("parent process send signal to kill child process!\n"); //waitpid(pid,NULL,0);printf("child process exit!\n"); exit(0); }
}

阅读并运行程序并回答以下问题:
问题1:红色部分的含义是什么?
等待pid退出
问题2:若不添加红色程序会出现什么情况?
运行了多次,没有出现什么情况,可能主进程会先于子进程结束(但我没有运行出这个结果)

3.编制一段程序,使其实现进程的软中断通信

要求:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按ctrl-c键);当捕捉到中断信号后,父进程用系统调用kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:
Child process 1 is killed by parent!
Child process 2 is killed by parent!
父进程等待两个子进程终止后,输出如下的信息后终止:
Parent process is killed!

#include 
#include 
#include void waiting();
void stop();
void keep_alive();
int wait_mark;int main(){int p1,p2;while((p1=fork())==-1);if(p1>0){while((p2=fork())==-1);if(p2>0){printf("parent\n");wait_mark=1;signal(SIGINT, stop);  waiting();kill(p1, SIGINT);kill(p2, SIGINT);wait(0);wait(0);printf("parent process is killed children and exit!\n");exit(0); }else{printf("p2\n");//wait_mark=1;signal(SIGINT, keep_alive);pause();printf("child process2 is killed by parent!\n");exit(0);}}else{printf("p1\n");//wait_mark=1;signal(SIGINT, keep_alive);pause();printf("child process1 is killed by parent!\n");exit(0);}
}
void waiting(){while(wait_mark!=0);
}
void stop(){wait_mark=0;
}
void keep_alive(){
}

阅读并运行程序并回答以下问题:
问题1:红色部分的含义是什么?
接收Ctrl+C
问题2:程序的运行结果是什么?
在这里插入图片描述

相关内容

热门资讯

不开心的句子 发表不开心的心... 不开心的句子 发表不开心的心情句子  在平时的学习、工作或生活中,大家都接触过很多优秀的句子吧,句子...
幽默风趣的句子 幽默风趣的句子(精选100句)  在生活、工作和学习中,大家都看到过许多经典的句子吧,从语气上分,句...
孝敬老人最美的句子 孝敬老人最美的句子大全  在日常的学习、工作、生活中,大家一定没少看到经典的句子吧,不同的句子在语言...
稳重成熟的句子 稳重成熟的句子  在日常学习、工作或生活中,大家都经常接触到句子吧,从表达的角度说,句子是最基本的表...
描写开心的句子 描写开心的句子(精选120句)  无论是身处学校还是步入社会,大家都看到过许多经典的句子吧,不同的句...
感谢姐姐的短句暖心感恩姐姐的... 感谢姐姐的短句暖心2022感恩姐姐的句子  在平凡的学习、工作、生活中,大家总少不了接触一些耳熟能详...
刻骨铭心的爱情句子 有关刻骨铭心的爱情句子  1、爱情不在于一朝一夕,需要的是刻骨铭心。  2、回首往事,是谁欠谁的债,...
自我提神醒脑的句子 自我提神醒脑的句子(精选185句)  在平平淡淡的日常中,大家都收藏过令自己印象深刻的句子吧,句子可...
草房子好句 草房子好句  1、立在炉上的那只黑色的瓦罐,造型土气,但似乎又十分讲究,粗朴的身子,配了一只弯曲得很...
火树银花造句 火树银花造句  一、火树银花简介  意思是形容张灯结彩或大放焰火的灿烂夜景。出自唐·苏味道《正月十五...
友谊留言句子   友情的真挚永远比不上真金。真金能卖友情不能。友情,就好比一条简单的线。无论你在什么地方,发生什么...
短而精的句子   短而精的句子  1、爱是一种需要不断被人证明的虚妄,就像烟花需要被点燃才能看到辉煌一样。  2、...
简单的排比句 简单的排比句  在学习、工作或生活中,大家总少不了接触一些耳熟能详的句子吧,从语气上分,句子可以分为...
优美文艺句子 通用优美文艺句子48句  黑白头像下隐藏着一颗破碎的心和一个等待的人。下面是小编搜索整理的优美文艺句...
对人生路迷茫的句子 对人生路迷茫的句子  迷茫,让我们的生活像水一样平乏无味却又无处不在,久而久之,渗透出汩汩水流,汇而...
描写周边环境的句子 描写周边环境的句子(精选50句)  在生活、工作和学习中,大家都接触过很多优秀的句子吧,不同的句子在...
高中好词佳句摘抄 高中好词佳句摘抄大全  摘抄是指从文刊、文件等资料里阅读的时候 ,把语言优美,值得品析,值得学习的词...
真心思念一个人的句子 真心思念一个人的句子1、无论如何谢谢你,七年里,你见证了我的一切。2、我在怀念,没有想念的意思。3、...
描写母爱伟大的经典句子 描写母爱伟大的经典句子(精选75句)  无论在学习、工作或是生活中,大家最不陌生的就是句子了吧,句子...
新年祝福语句子 新年祝福语句子(精选160句)  在学习、工作乃至生活中,大家或多或少都会用到过祝福语吧,祝福语是人...