使用CTRL + C终止程序后运行一些东西

时间:2015-06-07 05:14:16

标签: c function terminal termination

在程序终止之前有没有办法运行函数?例如。用户按下ctrl + c,你想要打印一些东西。谢谢!

1 个答案:

答案 0 :(得分:3)

对于* nix系统,您可以使用signal()功能。

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

volatile sig_atomic_t sig_flag = 0;

void sig_handler(int sig)
{
    // A signal has been received. Set `sig_flag` to the value of the signal
    sig_flag = sig;
}

int main()
{
    // Call sig_handler on SIGINT (Ctrl-C)
    signal(SIGINT, sig_handler);

    while (sig_flag != SIGINT);
    printf("Bye\n");

    return 0;
}
编辑:根据Basile的评论,我应该提到只有少数几个函数在信号处理程序下可以安全使用,因为处理程序是异步调用的。 signal(7)

下提供了安全功能列表