2
如果我们指定不同的处理程序来说SIGABRT等等。我们可能无法杀死这个进程,显然,除非我们可以,否则这不是一个好主意。因此,该手册说SIGSTOP和SIGKILL不能被阻止或忽略,这是否意味着它必须杀死或停止进程,不管你分配了什么处理程序?我们可以为Linux用户空间程序中的每个信号分配信号处理程序吗?
如果我们指定不同的处理程序来说SIGABRT等等。我们可能无法杀死这个进程,显然,除非我们可以,否则这不是一个好主意。因此,该手册说SIGSTOP和SIGKILL不能被阻止或忽略,这是否意味着它必须杀死或停止进程,不管你分配了什么处理程序?我们可以为Linux用户空间程序中的每个信号分配信号处理程序吗?
SIGSTOP
和SIGKILL
信号不能被捕获或忽略。可以使用signal()
或sigaction()
来为它们设置处理程序,但这些处理程序永远不会被调用,所以这样做没有意义。
这正是我想知道的 – dspjm
@Kevin你可以用示范回来吗?据我所知,手册是正确的。 'SIGSTOP'不能被处理。它会一直停止这个过程。这是一个鲜为人知的规则,而不是'SIGKILL'的规则,但这是事实。 –
Wumpus是正确的。 http://pubs.opengroup.org/onlinepubs/009695399/functions/sigpause.html表示SIGSTOP和SIGKILL不能被阻止。值得注意的是:在UNIX之间信号的名称不一定是可移植的,一些体系结构具有不同类型的奇数信号,如SIGPOWER。所以一定要获得正确的Os信号清单。 –
@jimmcnamara对不起仍然没有清楚,这是否意味着我们不可能使用sigaction来定义SIGSTOP和SIGKILL的处理程序(它被“无法被捕获”)? – dspjm