首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >嵌入式Linux:判断信号是否处于等待状态

嵌入式Linux:判断信号是否处于等待状态

作者头像
不脱发的程序猿
发布于 2026-10-06 13:19:05
发布于 2026-10-06 13:19:05
160
举报

在 Linux 系统中,如果进程当前正在执行信号处理函数,并在此期间接收到了新的信号,且该信号属于信号掩码中的成员,那么内核会将该信号阻塞并添加到进程的 等待信号集 中(即处于等待状态的信号)。这些信号会一直保持等待状态,直到它们从信号掩码中移除并被处理。

为了查询当前进程有哪些信号处于等待状态,可以使用 sigpending() 函数获取这些信号。

sigpending() 的函数原型如下:

代码语言:cpp
复制
#include <signal.h>
int sigpending(sigset_t *set);
  • 参数:
    • set:用于存放处于等待状态的信号集的地址。
  • 返回值:
    • 成功返回 0;
    • 失败返回 -1,并设置 errno 以指示错误原因。

该函数需要包含头文件 <signal.h>。

下面是一个示例,展示如何使用 sigpending() 函数判断 SIGINT 信号是否处于等待状态:

代码语言:cpp
复制
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
 
int main() {
    sigset_t sig_set;
    
    // 初始化信号集为空
    sigemptyset(&sig_set);
    
    // 获取当前处于等待状态的信号
    sigpending(&sig_set);
    
    // 判断 SIGINT 信号是否处于等待状态
    if (sigismember(&sig_set, SIGINT)) {
        puts("SIGINT 信号处于等待状态");
    } else {
        puts("SIGINT 信号未处于等待状态");
    }
    
    return 0;
}

作者:不脱发的程序猿。来源:CSDN 原文(CC BY-SA 4.0)。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档