0

我想检测我的程序的终止信号,以便在离开我的程序之前执行一些 C 指令。我的程序在 linux 上运行

有可能这样做吗?如果是,我该怎么做?

4

3 回答 3

5

您可以使用 注册信号处理程序sigaction()。请注意,您无法处理SIGKILLSIGSTOP虽然。

于 2013-06-06T10:13:28.617 回答
1

不,SIGKILL不能处理,也许你想抓CTRL+C,那么:

#include <stdio.h>
#include <signal.h>

volatile sig_atomic_t stop;

void
inthand(int signum)
{
    stop = 1;
}

int
main(int argc, char **argv)
{
    signal(SIGINT, inthand);

    while (!stop)
        printf("a");

    printf("exiting safely\n");

    return 0;
}

会成功的

于 2013-06-06T10:18:23.827 回答
-1

如果将 SIGKILL 或 SIGTERM 发送到您的进程,则您无法屏蔽或忽略该信号。您可以处理和屏蔽它的其他信号。

于 2013-06-06T10:14:25.010 回答