系统调用学习29

news2024/11/15 15:37:44

 

#include<iostream>
#include<signal.h>
#include<unistd.h>
#include<vector>
// 定义信号屏蔽常量
#define BLOCK_SIGNAL 2
#define MAX_SIGNUM 31

// 定义需要屏蔽的信号数组
int sigarr[]={2,3,4};
// 展示当前线程未处理的信号状态
static void show_pending(sigset_t &set)
{
    int i;
    // 遍历并打印每个信号的状态
    for(i=1;i<=MAX_SIGNUM;i++)
    {
        if(sigismember(&set,i))
        {
            std::cout<<"1";
        }else{
            std::cout<<"0";
        }
    }
    std::cout<<std::endl;
}
int main()
{
    // 屏蔽指定信号
    sigset_t block,oblock,pending;
    // 初始化信号集
    sigemptyset(&block);
    sigemptyset(&oblock);
    sigemptyset(&pending);
    // 添加需要屏蔽的信号到block信号集
    for(auto sig:sigarr) sigaddset(&block,sig);
    // 应用新的信号掩码,保存旧掩码
    sigprocmask(SIG_SETMASK,&block,&oblock);

    // 循环打印pending信号集
    int cnt = 10;
    while(true)
    {
        // 清空pending信号集
        sigemptyset(&pending);
        // 获取当前线程未处理的信号状态
        sigpending(&pending);
        // 展示pending信号状态
        show_pending(pending);
        sleep(1);
        cnt--;
        // 恢复原始信号掩码
        if(cnt==0)
        {
           std:: cout<<"恢复信号"<<std::endl;
            sigprocmask(SIG_SETMASK,&oblock,&block);
        }
    }
}

 

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

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

相关文章

TortoiseGit修改差异查看器为BeyondCompare

1. TortoiseGit修改差异查看器 比较文件&#xff1a;”C:\Program Files\Beyond Compare 4\BComp.exe” %base %mine /title1%bname /title2%yname /leftreadonly差异文件&#xff1a;”C:\Program Files\Beyond Compare 4\BCompare.exe2. TortoiseGit修改合并工具 解决冲突&…

【嵌入式开发之网络编程】TCP端口和UDP端口

目录 网络端口的定义及作用 运输层的作用 运输层的两个主要协议 用户数据报协议UDP (User Datagram Protocol) 传输控制协议TCP (Transmission Control Protocol) 运输层的端口及分类 按照端口号分类 按照协议类型分类 BSD端口 网络端口的定义及作用 在网络技术中…

低代码平台的优势与挑战:现代开发的革新之路

在数字化转型的浪潮中&#xff0c;低代码平台&#xff08;Low-Code Platforms&#xff09;成为了开发者和企业的重要工具。低代码平台通过可视化界面和拖拽式功能&#xff0c;简化了应用程序的开发过程&#xff0c;使得即使是没有编程背景的用户也能够构建功能丰富的应用。然而…

ubuntu18.04下安装nvidia3090显卡驱动

前言&#xff1a;之前安装过4090的显卡&#xff0c;但是是使用20.04直接在第三方驱动里面安装的&#xff0c;这回使用的是18.04&#xff0c;版本估计是21年以前的&#xff0c;附加驱动直接没有&#xff0c;整整卡了两天&#xff0c;最后再查询多篇资料后最终安装好&#xff0c;…

软考-软件设计师 (计算机网络习题)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

Impala 与 Hive 的比较

Impala 与 Hive 的关系 impala是基于hive的大数据分析查询引擎&#xff0c;直接使用hive的元数据库metadata&#xff0c;意味着impala元数据都存储在hive的metastore当中&#xff0c;并且impala兼容hive的绝大多数sql语法。所以需要安装impala的话&#xff0c;必须先安装hive&…

​高德离线API如何加载高清卫星影像

我们有客户遇到这样一个问题&#xff0c;现有平台基于高德API开发&#xff0c;但希望将地图更新为高清卫星影像。 我估计你可能也会遇到这个问题&#xff0c;因此特撰此文与大家分享。 项目背景 高德API有着比较广泛的用户群体&#xff0c;有不少系统为了业务数据的呈现&…

大数据应用整理

1.架构划分 1.1.数据抽取转换加载层&#xff08;ETL&#xff09; 从源系统抽取、转换、加载到所需的源数据&#xff0c;存储到系统的数据仓库中。ETL的设计和实施占整体工作的50%以上。ETL层的主要职责是将原始数据源中的数据提取出来&#xff0c;经过清洗、转换等处理后&…

小白学AI,新手也能轻松掌握的LLM Agent工作原理基础知识全览!

摘要 本文深入解释了大型语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;代理&#xff08;Agent&#xff09;的工作原理&#xff0c;详细阐述了它们的结构、能力和应用。 摘要 LLM代理是一种先进的数字助手&#xff0c;它们超越了传统的聊天机器人&am…

Postman数据驱动之CSV文件和JSON文件的处理

数据驱动 数据驱动&#xff1a;通过在测试过程中使用不同的输入数据来执行相同的测试脚本或流程。 适用场景&#xff1a;当一个接口需要测试多个场景用例&#xff08;正例、反例&#xff09;&#xff0c;可以使用数据驱动的形式实现。 CSV文件 CSV&#xff08;Comma-Separ…

verilog实现STFT

短时傅里叶变换&#xff08;STFT, Short Time Fourier Transform&#xff09;&#xff0c;是处理采样数据、获取信号时频特征的一种常用方法。然而其消耗的计算资源较为庞大&#xff0c;在数据采集设备全速运行时&#xff0c;若在上位机进行 STFT 的计算&#xff0c;则很难做到…

vue2使用天地图

需求&#xff1a;用vue2使用天地图展示对应点位数据以及开发中出现的问题等&#xff0c;其实天地图的写法和百度地图差不多 注意&#xff01;&#xff01;&#xff01;天地图的接口不稳定&#xff0c;时常报错418&#xff0c;官网也是一样的情况&#xff0c;推荐还是使用百度或…

一种基于物联网(IoT)的生物多样性监测系统

目录 摘要 第一部分&#xff1a;引言 第二部分&#xff1a;相关工作 第三部分&#xff1a;贡献 第四部分&#xff1a;提出的系统架构 第五部分&#xff1a;BN使用的消息框架 第六部分&#xff1a;系统实施 第七部分&#xff1a;实验场景和结果 第八部分&#xff1a;结…

游戏开发之性能优化

游戏开发中的性能优化是一个复杂且多方面的过程&#xff0c;涉及到多个层面的改进和调整。以下是一些主要的优化技巧和方法&#xff1a; 代码优化&#xff1a; 缓存计算结果&#xff1a;对于那些耗费大量CPU计算而计算结果无需每帧变化的逻辑&#xff0c;使用缓存可以显著提高性…

Java——反射(4/4):反射的作用、应用场景(案例需求、实现步骤、代码实现)

目录 作用 应用场景 案例需求 实现步骤 代码实现 作用 基本作用&#xff1a;可以得到一个类的全部成分然后操作。可以破坏封装性。最重要的用途是&#xff1a;适合做Java的框架&#xff0c;基本上&#xff0c;主流的框架都会基于反射设计出一些通用的功能。 通过反射能够…

Springboot+vue 建筑资质证书管理系统

建筑企业资证管理系统&#xff0c;简称证书管理软件&#xff0c;基于springbootvue开发&#xff0c;数据库采用mysql&#xff0c;。以建筑企业证书管理为核心&#xff0c;包含投证书管理、证书过期提醒&#xff0c;辅助建筑企业高效完成证书管理、人员信息、投标经营活动等管理…

全功能知识付费小程序源码系统 支持视频课程、音频课程、图文课程 附带代码包以及搭建部署教程

系统概述 “全功能知识付费小程序源码系统”是一款专为知识创作者、教育机构及企业内训部门设计的全方位解决方案。该系统基于当前最流行的小程序技术构建&#xff0c;无需下载安装&#xff0c;用户只需通过微信等社交平台即可轻松访问&#xff0c;极大地降低了使用门槛。同时…

CentOS 7 安装流程详细教程

目录 前言1. CentOS 7 概述2. 安装环境准备2.1 硬件要求2.2 安装介质准备 3. CentOS 7 安装步骤3.1 引导安装程序3.2 选择语言和键盘布局3.3 配置安装源和软件包3.4 配置分区3.5 设置网络和主机名3.6 设置时间和日期3.7 设置 root 密码和创建用户3.8 开始安装并完成配置 4. 安装…

8-11章节复习总结

文章目录 数据库技术三级模式两级映射数据设计数据模型E-R模型关系模型练习题 关系代数关系代数运算符练习题 SQL语句练习题 数据库控制练习题 数据库故障和备份函数依赖函数依赖的公理系统键与约束 规范化第一范式1NF第二范式2NF第三范式3NF练习题 模式分解练习题 标准化与知识…

R语言统计分析——回归诊断2

参考资料&#xff1a;R语言实战【第2版】 R语言的car包提供的大量函数&#xff0c;大大增强了拟合和评价回归模型的能力。如下&#xff1a; 函数目的qqPlot()分位数比较图durbinWatsonTest()对误差自相关性做Durbin-Watson检验crPlots()成分与残差图ncvTest()对非恒定的误差方…