如何更改"管道核心转储到程序"捕获的信号列表?

How to change the list of signals catched with 'Piping core dumps to a program'?

本文关键字:信号 列表 管道 何更改 核心 转储 程序      更新时间:2023-10-16

如何更改用"管道核心转储到程序"("man核心")捕获的信号列表?

目前只捕获了SIGQUIT/SIGILL/SIGTRAP/SIGABRT/SIGBUS/SIGFPE/SIGSEGV/SIGXCPU/SIGXFSZ/SIGSYS信号。

我需要添加一些其他信号,比如SIGPIPE。我该怎么做?

谢谢。

signal(2)手册页中的以下语句回答了您的问题:

During an execve(2), the dispositions of handled signals are reset to the default; the
dispositions of ignored signals are feft unchanged.

换句话说,您只能在任意进程中设置要忽略的信号,并且只有当任意进程没有通过配置自己的信号处理来覆盖它时。

当进程启动(执行)时,任何未被忽略的信号都将恢复到默认行为。在这种情况下,改变信号处理行为的唯一方法是在过程本身中。

您可以使用sigaction(2)来更改拥有源代码的进程中的信号处理行为。否则,您将无能为力。