在哪里可以找到有关信号的完整信息?

在哪里可以找到有关信号的完整信息?

我想知道有关信号的完整信息SIGTTIN,例如我想知道SIGTTIN信号是否可以处理。

文档仅说明有关信号的以下内容SIGTTIN

SIGTTIN 21,21,26 停止后台进程的终端输入

并且man SIGTTIN在终端中输入没有返回任何内容。


编辑:

我的意思不是可以向进程发送什么信号,而是接收信号的进程是否可以更改信号的默认操作。例如:SIGTTIN信号的默认操作是停止进程,您可以使用该sigaction()函数在程序中更改此默认操作。现在有些信号不允许您更改其默认操作,这就是我正在寻找的内容(有关哪些信号不允许您更改其默认操作的文档)。

答案1

您可以使用此命令,该命令通常是正确的。

kill -l | egrep SIGTTIN

您还可以编写一个快速 PERL 脚本来捕获 SIGTTIN + 然后在后台运行它 + 如果您的 SIGTTIN 处理程序运行,则输出一条简单的诊断消息。

答案2

我认为除了完全忽略信号或安装信号处理程序之外,您无法更改信号的默认操作。sigaction(2)说:

sa_handler指定与signum关联的操作,并且可能是SIG_DFL默认操作,SIG_IGN忽略此信号,或者指向信号处理函数的指针。该函数接收信号编号作为其唯一参数。

如果您想将某个信号的操作更改为其他默认操作之一,您可以引发另一个信号来执行您想要的操作(获取核心转储或停止进程),或者只是简单退出(终止进程) )。

SIGKILLSIGSTOP是您无法捕捉或阻止的两个信号。sigaction(2)

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

signal(7)

这些信号SIGKILL无法SIGSTOP被捕获、阻止或忽略。

然而,忽略来自实际故障(无效的内存访问、无效的指令)的信号可能不会使进程处于非常稳定的状态。

相关内容