c - 限制信号处理程序仅捕获来自定义它的特定文件的信号

标签 c linux signals

嗨 我在一个文件中定义了一个信号处理程序,从那里生成信号。我已经定义了一个“static struct sigaction”来定义一个非静态的信号处理程序。

我们知道使用“静态”我们也可以将范围限制到一个文件,所以使用这种技术我们可以限制信号处理程序只捕获来自定义它的文件的信号吗?

我的"file"- File1,与其他文件- File2 链接,File2 可以生成信号,不应被 File1 处理程序捕获。那么,如果我在 File1 中放置“static struct sigaction”,我可以实现这个吗?

enter code here
File1.c

static struct sigaction;
void sigHandler(int sig); // also a handler for SIG_NO but should catch signals generated for only File1.c (sig handler is non-static)

File2.c
kill(getpid(), SIG_NO)

File1.c and File2.c are linked together.

最佳答案

在何处声明/定义处理程序并不重要。如果您要安装处理程序,它会处理进程接收到的所有该类型的信号。

因此,无论您的标识符的范围和链接如何,一旦您安装了处理程序,它就会处理所有事情。

关于c - 限制信号处理程序仅捕获来自定义它的特定文件的信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5739994/

相关文章:

c++ - 使用派生类对象 Qt 访问基类信号

linux - 使用 SIGALRM 和计时器时内存损坏

c++ - C/C++ 位域与按位运算符区分位,哪个更快、更好、更便携?

c - 如何设置发送数据包的 TCP 选项?

c - scanf 之后 fgets 不起作用

c - #define 的优点而不是在嵌入式中创建函数

linux - 哪个工具或命令可以提供非常准确的 Linux 内存使用状态?

c - 可重入和ThreadSafe函数示例

linux - 从操作系统接收 SIGTERM

signals - 为什么linux决定标准信号比rt信号具有更高的优先级?