实验四 软中断信号及处理

news2025/1/18 4:46:59

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

#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<signal.h>
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<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<signal.h>
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<sys/types.h> 
#include<sys/stat.h> 
#include<signal.h> 
#include<unistd.h> 
#include<stdio.h> 
#include<stdlib.h> 
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 <unistd.h>
#include <stdio.h>
#include <signal.h>

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:程序的运行结果是什么?
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/23775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++11

1. C11简介 相比于 C98/03&#xff0c;C11则带来了数量可观的变化&#xff0c;其中包含了约140个新特性&#xff0c;以及C03标准中约600个缺陷的修正&#xff0c;这使得C11更像是从C98/03中孕育出的一种新语言。相比较而言&#xff0c;C11能更好地用于系统开发和库开发、语法更…

玩机搞机---脱离电脑 用手机给手机刷机 解锁bl 获取root的方法教程

友友们有时候手机出问题需要刷机而手头缺没有电脑的情况下该如何解决呢&#xff0c;今天的话题就聊聊 这方面的常识。其实类似手机给手机刷机的方法有很多&#xff0c;但原理都是一样的&#xff0c;有时候可以起到应急解决方法&#xff0c; 一 需要的工具与准备工作; 手机A …

长尾词挖掘免费工具-长尾关键词挖掘词

什么是关键词&#xff1f;在 SEO&#xff0c;搜索引擎优化的范畴里&#xff0c;关键词指的是用户输入到搜索框内的那一个&#xff0c;或者几个词&#xff0c;目的是为了找到他要的答案。搜索引擎收到用户发送的这几个词&#xff0c;或者说关键词后&#xff0c;就会试图找到最合…

同惠TH9310耐压测试仪应用举例

TH9310交直流耐压绝缘测试仪是一款小功率经济型智能安规测试仪器。体积小、重量轻、外形美观、操作简便。TH9320产品可广泛应用于家用电器、变压器、电气设备、元器件的安全性能检查。 应用举例&#xff1a; ■ 自动化测试系统 ■ 家用电器 ■ 变压器、电机 ■ 电气设备 …

Postman高频面试题及答案汇总(接口测试必备)

Postman在软件测试的面试中&#xff0c;可以说是必考题了&#xff0c;既然是高频考题&#xff0c;当然得为粉丝宝宝们整理一波题库喽~ 一、Postman在工作中使用流程是什么样的&#xff1f; 二、你使用过Postman的哪些功能&#xff1f; 三、Postman如何管理测试环境&#xff…

【改进灰狼优化算法】基于协调探索和开发能力的改进灰狼优化算法求解单目标优化问题(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

1.QML Hello world

目录1. 如何显示HelloWorld&#xff1f;2. QML工程如何创建&#xff1f;3. QML HelloWorld工程里有什么文件&#xff1f;1. 如何显示HelloWorld&#xff1f; 本系列文章基于Windows11Qt6.3&#xff0c;GUI开发第一步&#xff0c;显示一个Hello world。 import QtQuick //Qt5 需…

数据结构与算法是什么?

人们常说&#xff1a; 程序 数据结构 算法 当遇到一个问题&#xff0c;或者有一个需求时&#xff0c;要设计程序来解决问题&#xff0c;重要的一步就是设计算法&#xff0c;并选择或者说设计相应数据结构来实现算法。 一、数据结构 数据结构在问题解决中主要用来&#xf…

第一章三层交换应用

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。个人爱好: 编程&#xff0c;打篮球&#xff0c;计算机知识个人名言&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石…

CSS的选择器(超详细)

目录 一、常用的选择器 1.元素选择器 2.类选择器(class选择器) 3.id选择器 4.通配符选择器 二、群组选择器 三、关系选择器 1.后代选择器 2.子代选择器 3.相邻兄弟选择器 4.通用兄弟选择器 5.案例 四、属性选择器 五、伪类选择器 1.常用的伪类选择器 2.否定伪类 3.元…

智慧农业大数据平台:农业中的“大智慧”

智慧农业是现代化农业发展的重要途径&#xff0c;是利用物联网等现代信息技术提升农业生产管理水平&#xff0c;实现传统农业转型升级的重要措施。近年来&#xff0c;我国食品安全问题频发&#xff0c;究其根本原因&#xff0c;既有商家过度逐利的过错&#xff0c;也有农产品在…

MySQL 不相关子查询怎么执行?

1. 概述 从现存的子查询执行策略来看&#xff0c;半连接 (Semijoin) 加入之前&#xff0c;不相关子查询有两种执行策略&#xff1a; 策略 1&#xff0c;子查询物化&#xff0c;也就是把子查询的执行结果存入临时表&#xff0c;这个临时表叫作物化表。 explain select_type …

Linux: network: tcp_rmem/rmem_default

文章目录tcp_rmem - 取值是&#xff1a;3个整数向量: min, default, maxmindefault&#xff1a;maxrmem_defaultrmem_max具体的用法相关的方法tcp_rmem - 取值是&#xff1a;3个整数向量: min, default, max min TCP sockets使用的最小接收缓存大小。这个最小值的作用是在&am…

PowerPC平台移植RTL8822BU

目录编译驱动文件修改Makefile修改代码安装前置工具编译openssl编译libnl解决报错编译wpa_supplicant解决报错编译hostapd移植入嵌入式编译驱动文件 修改Makefile 修改代码 由于我这边kernel用的是比较老的&#xff0c;有些接口不支持&#xff0c;所以需要做一些处理 关于is…

K_A07_001 基于 STM32等单片机驱动A4988模块按键控制步进电机正反转

目录 一、资源说明 二、基本参数 1、参数 2、引脚说明 三、驱动说明 SETP时序 对应程序: 细分说明 程序 四、部分代码说明 1、接线说明 1.1、STC89C52RCA4988模块 1.2、STM32F103C8T6A4988模块 五、基础知识学习与相关资料下载 六、视频效果展示与程序资料获取 七、项目…

基于深度学习的人脸表情识别的AR川剧变脸(二)

在一中&#xff0c;我们训练了一个&#xff0c;可以识别angry、disgust、fear、happy、sad、surprised、normal七种人脸表情。 本文将建立在表情识别的基础上&#xff0c;设计一款AR变脸效果的软件&#xff0c;通过前置摄像头获取人脸图像&#xff0c;使用训练好的模型进行人脸…

航空摄影与正射摄影的区别

航空摄影 航空摄影是一种摄影&#xff0c;可以在其中从空中捕捉远处的图像。航空摄影的主题可以涵盖许多不同的领域&#xff0c;例如军事侦察、地质、农业等。但它也可以使用不同的技术手段&#xff0c;如无人机、直升机或飞机。本指南将简要概述航空摄影&#xff0c;如何在 G…

百趣代谢组学文献分享:代谢组学中复溶溶剂究竟如何选?

今天&#xff0c;BIOTREE 技术支持工程师Novenia 将和奋斗在实验室的小伙伴们分享一篇关于代谢组学实验过程中溶剂选择的文章Tuning Metabolome Coverage in Reversed Phase LC−MS Metabolomics of MeOH Extracted Samples Using the Reconstitution Solvent Composition。这是…

Canal1.1.6安装部署

什么是Canal 阿里巴巴 B2B 公司&#xff0c;因为业务的特性&#xff0c;卖家主要集中在国内&#xff0c;买家主要集中在国外&#xff0c;所以衍生出了同步杭州和美国异地机房的需求&#xff0c;从 2010 年开始&#xff0c;阿里系公司开始逐步的尝试基于数据库的日志解析&#…

反函数求导:自然对数 ln是怎么得到的;为什么自然对数的导数是 1/ x;arcsin 和 arccos 的导数求算

参考视频&#xff1a;MIT微积分 如何得到的自然对数 lnlnln 首先我们知道以 eee 为底的指数函数 exe^xex 其次&#xff0c;我们引入反函数&#xff08;逆函数&#xff09;的概念 f−1(y)f^{-1}(y)f−1(y) 对于任意的 xxx 如果 f(x)yf(x)yf(x)y 那么 xf−1(x)xf^{-1}(x)xf−1(…