【问题标题】:ctrl+c not sending SIGKILL to processctrl+c 不向进程发送 SIGKILL
【发布时间】:2012-03-28 09:25:06
【问题描述】:

我已经尝试过实现这个功能:

void alarm_handler(int signal)
{
    if(signal==SIGKILL)
    {
        fprintf(stderr,"Process killed\n");
        exit(SIGKILL);
    }
}

并以这种方式主要使用它:

signal(SIGKILL,alarm_handler);

所以如果我按 ctrl+c,在退出之前它会打印“进程被杀死”,但 id 不打印它。为什么?

【问题讨论】:

标签: c linux sigkill


【解决方案1】:

Ctrl+C 通常发送SIGINT,而不是SIGKILL

【讨论】:

  • 通常情况下,但总是(除非您以非常奇怪的方式配置终端 tty)是 Ctrl-C 发送 SIGINT
  • @Basile Starynkevitch:我不想排除奇怪终端的可能性。可以编写一个/配置一个发送SIGKILL 而不是SIGINT :)
【解决方案2】:

信号 SIGKILL 和 SIGSTOP 不能被捕获、阻止或忽略。

使用 SIGINT。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    相关资源
    最近更新 更多