关于sigprocmask函数的一点疑惑,望解答

发布于 2022-10-15 06:45:07 字数 1190 浏览 17 评论 0

[code]:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
void handle_sigint(int signo)
{
        printf("receive signal %d.\n",signo);
}
int main()
{
        sigset_t  mask; //信号掩码结构变量,用于指定新的信号掩码
        sigset_t omask; //信号掩码结构变量,用于保存原来的信号处理掩码
        signal(SIGINT,handle_sigint);
        sigemptyset(&mask);  //用于清空信号掩码
        sigaddset(&mask,SIGINT);//用于向结构中增加SIGINT信号
        sigprocmask(SIG_BLOCK,&mask,&omask);//设置掩码,设置完成后,SIGINT信号将被阻塞
        sleep(10);
        sigprocmask(SIG_SETMASK        ,&omask,NULL);//恢复原来的信号处理掩码
        exit (0);
}

其中的sigprocmask(SIG_BLOCK,&mask,&omask);    语句中返回的&omask是原来的信号掩码,
疑惑::原来的信号掩码是那些信号呢??该如何查看呢??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

流云如水 2022-10-22 06:45:07

本帖最后由 cokeboL 于 2011-05-17 22:07 编辑

回复 1# long361800

sigprocmask一般是为了保护临界区,执行完临界区后恢复以前的屏蔽就OK了,没必要查看。如果需要,可以sigismember查看某个信号是否在该屏蔽集中被设置,但挨个试每个信号很麻烦的,只要查某些关心的信号是否被设置就够了吧。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文