首页 文章

Unix中的信号处理

提问于
浏览
0

我正在学习Unix中的信号处理,并且很难理解 sigprocmask() 中的 SIG_SETMASKo_set 以及它们做了什么?

据我所知 set 包含要阻止或解除阻塞的信号列表, SIG_BLOCK 阻止列表中的信号, SIG_UNBLOCK 解锁它们 .

sigprocmask(SIG_SETMASK,&set,& o_set);

1 回答

  • 3

    Linux manpage很好地解释了这一点 .

    如果该参数为非null,则信号掩码的先前值存储在最后一个参数(旧集)中 .

    SIG_SETMASK 设置当前信号集 . 我不确定还有什么可说的 - SIG_BLOCKSIG_UNBLOCK 将当前信号掩码和第二个参数组合在一起, SIG_SETMASK 无论当前值如何都设置它 .

    POSIX解释如下:

    SIG_BLOCK结果集应该是当前集和由set指向的信号集的并集 . SIG_SETMASK结果集应为set指向的信号集 . SIG_UNBLOCK结果集应该是当前集和set所指向的信号集的补码的交集 .

相关问题