安装后信号的范围是什么?
例如,如果我在一个名为A的函数中有这个代码:
sa.sa_handler = &handle_manager_bd;
sa.sa_flags = SA_NODEFER | SA_RESTART;
sigemptyset(&my_mask);
sa.sa_mask = my_mask;
sigaction(SIGUSR1, &sa, NULL);
如果在此之后我调用B,这是同一程序中的另一个函数,该进程将获取信号并执行handle_manager_bd
指定的操作对吗?
我想了解的另一个例子如下:如果我在函数A中安装了处理程序,就像之前和之后一样,我调用一个函数C,它包含在包含"c.h"
之类的头文件中通过包含A #include "c.h"
的程序,如果我没有在函数C中安装信号处理程序,信号将被识别,因为我已经在A中安装了它,或者我应该再将上面的代码放在函数C中就像我为A做的那样?
答案 0 :(得分:2)
信号具有流程范围。一旦你安装了一个处理程序,它就会一直有效,直到
sigaction
SA_RESETHAND
标志