PHP / Linux:'kill -9'是否等同于SIGKILL?

时间:2013-06-03 11:48:22

标签: php linux signals

我正在看这个用于执行信号陷阱的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信号?谢谢!

2 个答案:

答案 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信号。