我正在看这段PHP代码,它用来做信号陷阱:
<?php
/*
SIGTERM for 'kill' default of -15
SIGINT for control-c
*/
declare(ticks = 1);
pcntl_signal(SIGTERM, "signal_handler");
pcntl_signal(SIGINT, "signal_handler");
function signal_handler($signal) {
switch($signal) {
case SIGTERM:
print "Caught SIGTERM\n";
exit;
case SIGKILL:
print "Caught SIGKILL\n";
exit;
case SIGINT:
print "Caught SIGINT\n";
exit;
}
}
while(1) {
//
}
?>SIGKILL是否等同于'kill‘命令的数字选项,如'kill -9'?如果不是,什么条件会导致SIGKILL信号?谢谢!
发布于 2013-06-03 20:01:45
是的,信号9是SIGKILL。您可以运行kill -l并查看信号列表及其编号(手册页signal(7)也有更多信息)。
然而,这个case是无用的。信号处理程序无法捕获SIGKILL (详细信息请参见手册页)。因此在switch语句中使用它是没有意义的。
发布于 2013-06-03 19:59:23
是的,你是对的。"kill -9“等同于SIGKILL。来自kill手册页:
“可通过三种方式指定备用信号:-9 -SIGKILL -KILL。”
另外,如果你看一下man 7信号:
"SIGKILL 9 Term Kill signal"所以,是的- "kill -9“将发出一个SIGKILL信号。
https://stackoverflow.com/questions/16896004
复制相似问题