C++之signal信号应用实例(一百七十六)

news2025/1/22 12:35:15

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:理解signal信号应用实例。

signal函数用于设置信号处理程序。信号是在程序执行期间由操作系统或其他进程发送给进程的一种通信机制。signal函数允许我们指定在接收到特定信号时要执行的处理程序。

signal函数的原型如下:

其中,signum参数表示要处理的信号的编号,handler参数是一个指向信号处理程序的函数指针。

signal函数的返回值是一个指向以前信号处理程序的函数指针。如果返回值是SIG_ERR,则表示设置信号处理程序失败。

2.应用实例

<1>v1.0 监控Ctrl + C信号

#include <iostream>
#include <stdlib.h>
#include <csignal>
#include <unistd.h>

void sigint_handler(int signal){
  std::cout << "Received SIGINT signal" << std::endl;
  // 可以在这里进行一些自定义的操作或采取适当的措施
  exit(0);
}

int main(){
  //注册SIGINT信号处理函数(处理Ctrl + C信号.)
  signal(SIGINT, sigint_handler);

  std::cout << "Press Ctrl+C to send SIGINT signal..." << std::endl;
  //无限循环,等待SIGINT信号的发生
  while (true){
    sleep(1);
  }
  return 0;
}

<2>v1.0 监控Ctrl + D信号

#include <iostream>

int main() {
  std::cout << "Press Ctrl+D (EOF) to end input..." << std::endl;

  while (true) {
    int input;
    std::cin >> input;

    if (std::cin.eof()) {
      std::cout << "Received EOF signal" << std::endl;
      break;
    }
  }

  return 0;
}

std::cin()函数读取输入流并检查std::cin.eof(),我们能够正确地捕获Ctrl+D(SIGQUIT)信号并退出程序。

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

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

相关文章

Docker容器:docker基础及安装

文章目录 一.docker容器概述1.什么是容器2. docker与虚拟机的区别2.1 docker虚拟化产品有哪些及其对比2.2 Docker与虚拟机的区别 3.Docker容器的使用场景4.Docker容器的优点5.Docker 的底层运行原理6.namespace的六项隔离7.Docker核心概念 二.Docker安装 及管理1.安装 Docker1.…

视频联网报警厂家怎么找?

视频联网报警厂家怎么找&#xff1f;要找到联网报警设备厂家&#xff0c;可以按照以下步骤进行&#xff1a; 1. 在互联网上搜索&#xff1a;可以使用搜索引擎&#xff0c;如谷歌或百度&#xff0c;搜索关键词&#xff0c;如“联网报警设备厂家”、“安防设备厂家”等&#xff…

生信豆芽菜-相关性热图

网址&#xff1a;http://www.sxdyc.com/panCancerHeatMap 1、数据准备 第一个文件&#xff1a;相关性矩阵 行为泛癌&#xff0c;列为通路的评分&#xff0c;数值为相关性&#xff08;当然也可以换成其他的数据&#xff09; 第二个文件&#xff1a;显著性矩阵 行为泛癌&#x…

linux学习(等待+进程替换初识)[9]

阻塞等待 一般在内核中阻塞&#xff08;伴随着被切换&#xff09;&#xff0c;等待被唤醒&#xff08;放在等待队列【一种数据结构】中&#xff09; 在Linux中&#xff0c;阻塞等待是指一个进程或线程被暂停执行&#xff0c;直到某个条件满足或事件发生。下面介绍两种常见的阻…

C++学习——string类的模拟实现

目录 string类的创建 string类的构造函数 itertor迭代器 []操作符重载 字符串修改函数 1.尾插函数 2.append函数 3.运算符重载函数 4.clear函数 5.swap函数 容量检测或修改函数 resize函数 reserve函数 经过上一次的博客之后我们已经认识了string类&#xff0c;并且可以使用str…

【C++从0到王者】第二十一站:继承

文章目录 前言一、继承的概念及定义1. 继承的概念2.继承的格式3.继承关系与访问限定符 二、基类和派生类的赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员 前言 继承是面向对象的三大特性之一。我们常常会遇到这样的情况。很多角色的信…

显卡nvidia-smi后 提示Faild 解决过程,包含卸载重装NVIDIA驱动步骤

显卡异常: 显卡nvidia-smi后 提示Faild 解决过程&#xff0c;卸载重装nvidia驱动步骤 文章目录 显卡异常: 显卡nvidia-smi后 提示Faild 解决过程&#xff0c;卸载重装nvidia驱动步骤 [toc]1 缘由2 解决过程3 过程所需命令4 解决4.1 把该显卡重新拔插一下卸载NVIDIA驱动的方法&a…

远程遥控IPTables进行端口复用

一、配置&#xff08;通过ip进行ping&#xff09; 1.创建复用链 iptables -t nat -N LETMEIN 2.创建端口复用将流量转发到22端口上 iptables -t nat -A LETMEIN -p tcp -j REDIRECT --to-port 22 3.开启开关&#xff0c;如果接收到一个长为 1139 的 ICMP 包&#xff0c;则将…

Ajax及前端工程化

Ajax&#xff1a;异步的js与xml。 作用&#xff1a; 1、通过ajax给服务器发送数据&#xff0c;并获得其响应的数据。 2、可以在不更新整个网页的情况下&#xff0c;与服务器交换数据并更新部分网页的技术。 一、同步与异步 二、原生Ajax 1、准备数据地址 2、创建XMLHttpReq…

图神经网络 day2 图的分类

图神经网络基础算法 1 GCN2 GraphSAGE2.1 采样&#xff1a;采样固定长度的邻居2.2 聚合2.3 GraphSAGE_minibatch2.4 GraphSAGE_embedding 3 GAT4. 图网络的分类4.1 递归图神经网络 RGNN4.2 图卷积神经网络GCN4.3 图注意力网络 GAT4.4 图自动编码 GAE4.5 图时空网络 GSTN4.6 图生…

echarts 柱状图-折线图-饼图的基础使用

上图示例图表展示相关配置&#xff1a; var myChart echarts.init(this.$refs.firstMain);myChart.setOption({legend: { // 图例设置top: "15%",type: "scroll",orient: "vertical",//图例列表的布局朝向。left: "right",pageIconCo…

【Docker】 Docker-Composite 启动 WordPress

引 本文将使用流行的博客搭建工具 WordPress 搭建一个私人博客站点。部署过程中使用到了 Docker 、MySQL 。站点搭建完成后经行了发布文章的体验。 WordPress WordPress 是一个广泛使用的开源内容管理系统&#xff08;CMS&#xff09;&#xff0c;用于构建和管理网站、博客和…

ChatGPT​保密吗?它有哪些潜在风险?如何规避?

自2022年11月公开发布以来&#xff0c;ChatGPT已成为许多企业和个人的必备工具&#xff0c;但随着该技术越来越多地融入我们的日常生活&#xff0c;人们很自然地想知道&#xff1a;ChatGPT是否是保密的。 问&#xff1a;ChatGPT保密吗&#xff1f; 答&#xff1a;否&#xff0…

MIUI免费字体更换

一、打开主题壁纸 二、选择 热销字 三、点击右上角 搜索 四、输入 字体 可以看到&#xff0c;免费的字体没多少&#xff0c;此时这里可以输入其他关键词&#xff1a;拼音、手写等&#xff0c;看个人需求进行筛选免费即可 关键词有以下这些&#xff0c;但不局限这些哈 五、点击…

linux系统服务学习(六)FTP服务学习

文章目录 FTP、NFS、SAMBA系统服务一、FTP服务概述1、FTP服务介绍2、FTP服务的客户端工具3、FTP的两种运行模式&#xff08;了解&#xff09;☆ 主动模式☆ 被动模式 4、搭建FTP服务&#xff08;重要&#xff09;5、FTP的配置文件详解&#xff08;重要&#xff09; 二、FTP任务…

共读《科研论文配图绘制指南--基于Python》学习重点

Book 《科研论文配图绘制指南–基于Python》 特别提示 学习内容&#xff08;书籍前3章&#xff09;开营时在群内以PDF形式发放 课程背景 系统地介绍基于Python的科研论文配图的绘制技巧&#xff0c;提高科研工作者的绘图效率&#xff1b; 100多种图形的详细绘制方法&#…

STM32F103-OLED使用教程

目录 1. OLED屏介绍2. OLED如何显示一个点3. 配置OLED屏幕4. OLED显示字符串和汉字5. OLED屏幕显示图片6. 总结 1. OLED屏介绍 OLED&#xff08;Organic Light Emitting Diode&#xff09;&#xff1a;有机发光二极管OLED显示屏&#xff1a;性能优异的新型显示屏&#xff0c;具…

Vue组件(详解)

目录 组件&#xff1a; 全局组件&#xff1a; 在HTML页面声明template&#xff1a; 局部组件&#xff1a; 局部组件第一种方式&#xff1a; 局部组件第二种方式&#xff1a; 插槽slot&#xff1a; 匿名插槽&#xff1a; 具名插槽&#xff1a; 父子组件通信&#xff1…

【双指针_和为 s 的两个数_C++】

和为s的两个数字 class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {int n nums.size();int left 0;int right n-1;while(left<right){if(nums[left]nums[right]>target) right--;else if(nums[left]nums[right]<tar…

Postman接口自动化测试实例

一.实例背景 在实际业务中&#xff0c;经常会出现让用户输入用户密码进行验证的场景。而为了安全&#xff0c;一般都会先请求后台服务器获取一个随机数做为盐值&#xff0c;然后将盐值和用户输入的密码通过前端的加密算法生成加密后串传给后台服务器&#xff0c;后台服务器接到…