我正在看这个用于执行信号陷阱的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信号?谢谢!
答案 0 :(得分:5)
是的,信号9是SIGKILL。您可以运行kill -l并查看带有编号的信号列表(手册页signal(7)
还有更多信息)。
但是这个case
没用。 SIGKILL无法被信号处理程序捕获(手册页有详细信息)。所以在switch语句中没有任何意义。
答案 1 :(得分:2)
是的,你是对的。 “kill -9”将等同于SIGKILL。来自杀人手册:
“可以用三种方式指定替代信号:-9 -SIGKILL -KILL。”
另外,如果你看看man 7信号:
"SIGKILL 9 Term Kill signal"
所以,是的 - “kill -9”会发出一个SIGKILL信号。