【发布时间】:2015-08-21 19:21:12
【问题描述】:
有没有办法在程序终止之前运行函数?例如。用户按下 ctrl+c 并且您想向他们打印一些东西。谢谢!
【问题讨论】:
-
对不起,我应该更具体一点 - 这是针对 Linux 的
标签: c function terminal termination
有没有办法在程序终止之前运行函数?例如。用户按下 ctrl+c 并且您想向他们打印一些东西。谢谢!
【问题讨论】:
标签: c function terminal termination
对于 *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)
【讨论】: