Linux 信号集 及其 部分函数

news2024/11/25 7:54:50

这几个函数都是对自己自定义的信号集操作

int sigemptyset(sigset_t *set)

功能:清空信号集中的数据,将所有的标志位置为0

参数:set需要操作的信号集

返回值:成功0失败-1

int sigfillset(sigset_t *set)

功能:清空信号集中的数据,将所有的标志位置为1

参数:set需要操作的信号集

返回值:成功0失败-1

int sigaddset(sigset_t *set, int signum)

功能:设置信号集的某个标志位为1,阻塞这个信号

参数:set需要操作的信号集

           signum:需要阻塞的那个信号

返回值:成功0失败-1

int sigdelset(sigset_t *set, int signum)

功能:设置信号集的某个标志位为0,不阻塞这个信号

参数:set需要操作的信号集

           signum:需要不阻塞的那个信号

返回值:成功0失败-1

int sigismember(const  sigset_t *set, int signum)

功能:某个信号是否堵塞

参数:set需要操作的信号集

           signum:需要判断的那个信号

返回值:1:signum堵塞   0:不堵塞

对系统的信号集进行操作只能通过下面的函数操作

int sigprocmask(int how, const sigset_t, sigset_t* oldset);

功能:将自定义信号集中的信号设置到内核中(设置阻塞,解除阻塞,替换)

参数:

        -how:如何对内核阻塞信号集处理

                -SIG_BLOCK:将用户设置的阻塞信号添加到内核中,内核原来的数据被1替换

                                假设内核中的阻塞信号集是mask   mask | set 就把1传递过去了

                -SIG_UNBLOCK:根据用户设置的数据,对内核中的数据进行解除阻塞

                                 mask &= ~set

                -SIG_SETMASK:覆盖原来的信号集

        -set:已经初始化好的自定义信号集

        -oldset:保存设置之前的内核中的阻塞信号集的状态

返回值:成功0失败-1

int sigpending(sigset_t * set)

功能:获取内核中的未决信号集

参数:set保存的是内核中的未决信号集的信息

#include<stdio.h>
#include<signal.h>
#include<unistd.h>
#include<stdlib.h>
int main() {
    sigset_t set;
    sigemptyset(&set);
    sigaddset(&set, SIGINT);
    sigaddset(&set, SIGQUIT);

    sigprocmask(SIG_BLOCK, &set, NULL);
    while (1)
    {
        sigset_t pendingset;
        sigemptyset(&pendingset);
        sigpending(&pendingset);
        for(int i = 1; i <= 32; i++) {
            if(sigismember(&pendingset, i) == 1) {
                printf("1");
            } else if(sigismember(&pendingset, i) == 0) {
                printf("0");
            }else{
                perror("sigismember");
                return 0;
            }
        }
        printf("\n");
    }
    
    return 0;
}

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

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

相关文章

各个浏览器离线安装包获取方式

前言 我们一般去浏览器官网下载所谓的官方版浏览器&#xff0c;但是如今呢&#xff0c;下载的都是在线安装包&#xff0c;大小大约1~2MB&#xff0c;安装时电脑必须联网&#xff0c;每次都要从网络上下载。就像下面这样的&#xff1a; 在线安装包的运行必须有网络环境&#…

批量使用cdo 修改分辨率的方法

文件夹里有很多这种grib文件 怎么有2.3T啊&#xff0c;好大&#xff0c;一个一个改太浪费时间了 现在我想用cdo 批量他们的分辨率都降低一些&#xff0c;怎么做呢&#xff1f; find . -name *low.grib |xargs -I{} cdo remapbil,r144x72 {} {}_low.nc 思路:使用 find 命令找到…

小型网络实验组网

路漫漫其修远兮&#xff0c;吾将上下而求索 时隔多日&#xff0c;没有更新&#xff0c;今日一写&#xff0c;倍感教育的乐趣。如果让我每天发无意义的文章&#xff0c;我宁可不发。 实验拓扑 实验要求 &#xff08;1&#xff09;内网主机采用DHCP分配IP地址 &#xff08;2&…

6-3 pytorch使用GPU训练模型

深度学习的训练过程常常非常耗时&#xff0c;一个模型训练几个小时是家常便饭&#xff0c;训练几天也是常有的事情&#xff0c;有时候甚至要训练几十天。 训练过程的耗时主要来自于两个部分&#xff0c;一部分来自数据准备&#xff0c;另一部分来自参数迭代。 当数据准备过程还…

分享一下微信公众号怎么添加砸金蛋链接

一、砸金蛋活动的优势 砸金蛋活动是一种非常有趣且吸引人的互动方式&#xff0c;在微信公众号中添加砸金蛋链接有以下优势&#xff1a; 提高用户参与度&#xff1a;砸金蛋活动能够激发用户的参与度和好奇心&#xff0c;让用户感到有乐趣和刺激。通过砸金蛋的方式&#xff0c;…

现在全国融资融券两融利率最低是多少?哪家证券公司券商费率低?

融资融券是指投资者通过向券商借入资金&#xff08;融资&#xff09;或借入证券&#xff08;融券&#xff09;&#xff0c;以达到获得更高收益、降低交易风险、提高资金利用效率的目的。通过融资&#xff0c;投资者可以用借入的资金买入更多的证券&#xff1b;通过融券&#xf…

乐器商城小程序开发全攻略

随着互联网的普及和电子商务的快速发展&#xff0c;越来越多的人开始通过在线购物来满足自己的需求。而乐器作为一种特殊的商品&#xff0c;其在线销售市场也在不断扩大。为了满足这一需求&#xff0c;许多乐器商家开始开发自己的小程序商城&#xff0c;以提供更加便捷、高效的…

python使用SMTP发送邮件

SMTP是发送邮件的协议&#xff0c;Python内置对SMTP的支持&#xff0c;可以发送纯文本邮件、HTML邮件以及带附件的邮件。 Python对SMTP支持有smtplib和email两个模块&#xff0c;email负责构造邮件&#xff0c;smtplib负责发送邮件。 首先&#xff0c;我们来构造一个最简单的…

[BJDCTF2020]Mark loves cat foreach导致变量覆盖

这里我们着重了解一下变量覆盖 首先我们要知道函数是什么 foreach foreach (iterable_expression as $value)statement foreach (iterable_expression as $key > $value)statement第一种格式遍历给定的 iterable_expression 迭代器。每次循环中&#xff0c;当前单元的值被…

184_Python 在 Excel 和 Power BI 绘制堆积瀑布图

184_Python 在 Excel 和 Power BI 绘制堆积瀑布图 一、背景 在 2023 年 8 月 22 日 微软 Excel 官方宣布&#xff1a;在 Excel 原生内置的支持了 Python。博客原文 笔者第一时间就更新到了 Excel 的预览版&#xff0c;通过了漫长等待分发&#xff0c;现在可以体验了&#xf…

微信生态全场景方案

微信生态全场景方案 微信生态场景复杂&#xff0c;如何实现快速接入&#xff1f; 企业拥有跨平台数据&#xff0c;平台间数据割裂&#xff0c;如何实现各业务线数据整合&#xff1f; 借助身份云平台可快速接入微信生态全场景&#xff0c;轻松打通微信生态、电商平台、第三方平台…

prometheus 告警

prometheus 告警 1, prometheus 告警简介 告警能力在Prometheus的架构中被划分成两个独立的部分。如下所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性的对告警规则进行计算,如果满足告警触发条件就会向Alertmanager发送告警信息。 在Prometheus中一…

基于Java建筑装修图纸管理平台设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

(高阶)Redis 7 第13讲 数据双写一致性 canal篇

面试题 问题答案如何保证mysql改动后,立即同步到Rediscanal 简介 https://github.com/alibaba/canal/wikihttps://github.com/alibaba/canal/wiki 基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 业务 数据库镜像数据库实时备份多级索引 (卖家和买家各自分库索引…

【springMvc】自定义注解的使用方式

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》 ⛺️ 生活的理想&#xff0c;为了不断更新自己 ! 1.前言 1.1.什么是注解 Annontation是Java5开始引入的新特征&#xff0c;中文名称叫注解。 它提供了一种安全…

【Java并发】聊聊死锁

什么是死锁 死锁出现的条件主要是资源互斥、占有并等待、非抢占、循环等待。 当出现两个线程对不同的资源进行获取的时候&#xff0c;A持有资源1&#xff0c;去获取资源2&#xff0c;B持有资源2&#xff0c;去获取资源1&#xff0c;就回出现死锁。 如何排查死锁 public cla…

计算机视觉与深度学习-经典网络解析-ResNet-[北邮鲁鹏]

这里写目录标题 ResNet参考产生背景贡献残差模块残差结构 批归一化ReLU激活函数的初始化方法 网络结构为什么残差网络性能好&#xff1f; ResNet ResNet&#xff08;Residual Neural Network&#xff09;是一种深度卷积神经网络模型&#xff0c;由Kaiming He等人在2015年提出。…

【1++的C++进阶】之智能指针

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的C进阶】 文章目录 一&#xff0c;什么是智能指针二&#xff0c;为什么需要智能指针三&#xff0c;智能指针的发展 一&#xff0c;什么是智能指针 要了解智能指针&#xff0c;我们先要了解RA…

Linux上运行Redis服务出现报错及解决方法

近期&#xff0c;有用户反馈在Linux上运行Redis服务时遇到了一个报错&#xff1a;“Sorry, target machine refused connection”。下面我们来分析这个报错的解决方法。 一、报错分析 该报错通常是由于Redis服务无法与目标机器建立连接导致的。可能的原因包括以下几个方面&…

IP模块组装网络包及转发网络包链路

引言 之前协议栈系列的文章讲解了 连接&#xff0c;收发网络包&#xff0c;断开连接这些操作协议栈模块的处理&#xff0c;但是协议栈是上层 接下来会 委托ip模块进行真正的处理。 网络包 网络包的组成 网络包由头部的控制信息和头部后面的传输数据组成。 控制信息代表了包要…