2013-06-05 39 views
2

如果我们指定不同的处理程序来说SIGABRT等等。我们可能无法杀死这个进程,显然,除非我们可以,否则这不是一个好主意。因此,该手册说SIGSTOP和SIGKILL不能被阻止或忽略,这是否意味着它必须杀死或停止进程,不管你分配了什么处理程序?我们可以为Linux用户空间程序中的每个信号分配信号处理程序吗?

+0

@Kevin你可以用示范回来吗?据我所知,手册是正确的。 'SIGSTOP'不能被处理。它会一直停止这个过程。这是一个鲜为人知的规则,而不是'SIGKILL'的规则,但这是事实。 –

+0

Wumpus是正确的。 http://pubs.opengroup.org/onlinepubs/009695399/functions/sigpause.html表示SIGSTOP和SIGKILL不能被阻止。值得注意的是:在UNIX之间信号的名称不一定是可移植的,一些体系结构具有不同类型的奇数信号,如SIGPOWER。所以一定要获得正确的Os信号清单。 –

+0

@jimmcnamara对不起仍然没有清楚,这是否意味着我们不可能使用sigaction来定义SIGSTOP和SIGKILL的处理程序(它被“无法被捕获”)? – dspjm

回答

1

SIGSTOPSIGKILL信号不能被捕获或忽略。可以使用signal()sigaction()来为它们设置处理程序,但这些处理程序永远不会被调用,所以这样做没有意义。

+0

这正是我想知道的 – dspjm