有人告诉我,每次我想使用sigset_t block_mask
时,我都需要在使用sigemptyset()
之前使用sigaddset()
函数。例如:
sigset_t block_mask;
sigemptyset(&block_mask);
sigaddset(&block_mask, SIGSEGV);
为什么我每次都需要这样做?
答案 0 :(得分:1)
sigaddset
更改集合中的单个信号,但保留所有其他信号的信息不受影响。
没有sigemptyset
,其他信息就不会被初始化。
将信号设置为位掩码,如下所示:
sigset_t block_mask; int block_mask;
sigemptyset(&block_mask); block_mask = 0;
sigaddset(&block_mask, SIGSEGV); block_mask |= 1 << SIGSEGV;