在程序终止之前有没有办法运行函数?例如。用户按下ctrl + c,你想要打印一些东西。谢谢!
答案 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)
下提供了安全功能列表