[Linux]信号集和sigprocmask信号屏蔽函数

[Linux]信号集和sigprocmask信号屏蔽函数,第1张

概述一、概述 系统提供这样一种能力,就是创建一个信号集,然后传递给信号屏蔽函数,从而屏蔽向该进程发送的信号。 有一点需要注意的是,不能屏蔽SIGKILL和SIGSTOP信号。 信号集是sigset_t类型,是一个屏蔽字,每一位代表一个信号,由下面几个函数初始化和创建。 int sigemptyset(sigset_t *set);int sigfillset(sigset_t *set);in

一、概述

系统提供这样一种能力,就是创建一个信号集,然后传递给信号屏蔽函数,从而屏蔽向该进程发送的信号。

有一点需要注意的是,不能屏蔽SIGKILL和SIGStop信号。

信号集是sigset_t类型,是一个屏蔽字,每一位代表一个信号,由下面几个函数初始化和创建。

int sigemptyset(sigset_t *set);int sigfillset(sigset_t *set);int sigaddset(sigset_t *set,int signo);int sigdelset(sigset_t *set,int signo);

屏蔽函数

int sigprocmask(int how,const sigset_t *restrict set,const sigset_t *restrict oset);

二、实例

实例代码中屏蔽了SIGUSR1信号后,任何途径向该进程发送SIGUSR1都不会被接收,SIGUSR2则如常接收。

#include <stdio.h>#include <unistd.h>#include <signal.h>voID sig_usr(int signo){    if (signo == SIGUSR1)        printf("received SIGUSR1\n");    else if (signo == SIGUSR2)        printf("received SIGUSR2\n");    else        printf("received signal %d\n",signo);}int main(voID){    sigset_t s_1;    sigemptyset(&s_1);    sigaddset(&s_1,SIGUSR1);    sigprocmask(SIG_SETMASK,&s_1,NulL);    signal(SIGUSR1,sig_usr);    signal(SIGUSR2,sig_usr);    pause();    printf("continue.\n");    return 0;}
总结

以上是内存溢出为你收集整理的[Linux]信号集和sigprocmask信号屏蔽函数全部内容,希望文章能够帮你解决[Linux]信号集和sigprocmask信号屏蔽函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1029928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存