来自man sigprocmask
:
“如果 oset 不为空,则将其设置为信号掩码的先前值。”
我的问题:没有运行或调试程序,
执行第 10 行后,旧信号掩码的值存储到
y
. 由于在执行此行之前没有阻塞信号,所以 的值是y
多少?有没有办法确定
z
执行第 14 行后的值?
1 void my_sig_handler(int sig){
2 write(1, "a", 1);
3 }
4 int main(){
5 signal(SIGINT, my_sig_handler);
6 sigset_t x, y, z;
7 sigemptyset(&x);
8 sigaddset(&x, SIGINT);
9
10 sigprocmask(SIG_BLOCK, &x, &y);
11 write(1,"1",1);
12 do_some_work();
13 write(1,"2",1);
14 sigprocmask(SIG_SETMASK, &y, &z);
15
16 exit(0);
17 }