【问题标题】:What is the scope of signals?信号的范围是什么?
【发布时间】:2018-01-12 19:54:46
【问题描述】:

我安装后信号的范围是什么??

例如,如果我在一个名为 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" 这样的头文件中包含带有#include "c.h"的A的程序,如果我没有在函数C中安装信号处理程序,则信号将被识别,因为我已经将它安装在A中,或者我应该像我一样将上面的代码再次放入函数C中一个?

【问题讨论】:

    标签: c linux scope signals


    【解决方案1】:

    信号具有过程范围。一旦你安装了一个处理程序,它就会一直有效,直到

    • 您通过再次调用sigaction 将其删除
    • 处理程序被调用并设置SA_RESETHAND 标志

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-06
      • 2011-11-11
      • 2020-10-18
      • 2017-04-22
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多