是否有一些信号无法覆盖其默认信号处理程序?

是否有一些信号无法覆盖其默认信号处理程序?

我认为 Linux 信号是这样工作的:

每个进程都有一个针对每个信号的默认信号处理程序,某些信号的默认信号处理程序会终止进程,而其他信号的默认信号处理程序只是忽略该信号,等等。

下表显示了默认信号处理程序可以采取的所有操作(该表来自此文档):

学期 默认操作是终止进程。

伊格恩 默认操作是忽略该信号。

默认操作是终止进程并转储核心(请参阅 core(5))。

停止 默认操作是停止该进程。

默认操作是继续该进程(如果该进程当前已停止)。

您可以使用自己的信号处理程序覆盖默认信号处理程序信号()(我认为已弃用)或sigaction()

到目前为止我的说法正确吗?

现在我的问题是:是否有一些信号您无法覆盖其默认信号处理程序?

答案1

您链接的两个手册页都提到了其处理程序不能被覆盖的信号。在signal(2)

这些信号SIGKILL不能SIGSTOP被捕获或忽略。

sigaction(2)

签名指定信号,可以是除 SIGKILL和之外的任何有效信号SIGSTOP

相关内容