[英]Why do I need to use the sigemptyset() function before the sigaddset()?
I was told that every time I want to use sigset_t block_mask
, I also need to use the sigemptyset()
function before I use sigaddset()
. 有人告诉我,我想每次都使用sigset_t block_mask
,我还需要使用sigemptyset()
函数之前我用sigaddset()
For example: 例如:
sigset_t block_mask;
sigemptyset(&block_mask);
sigaddset(&block_mask, SIGSEGV);
Why do I need to do it every time? 为什么每次都需要这样做?
sigaddset
changes a single signal in the set, but leaves the information about all other signals unaffected. sigaddset
更改集合中的单个信号,但不影响所有其他信号的信息。 Without sigemptyset
, that other information would not have been initialized. 没有sigemptyset
,其他信息将不会被初始化。
Think of a signal set as a bitmask, something like this: 将信号集视为位掩码,如下所示:
sigset_t block_mask; int block_mask;
sigemptyset(&block_mask); block_mask = 0;
sigaddset(&block_mask, SIGSEGV); block_mask |= 1 << SIGSEGV;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.