我的c程序退出时如何创建文件?

use*_*045 0 c shell signals signal-processing

我正在进行一项任务,我在shell中实现了unix history命令.在我的程序中,我为SIGINT编写了一个信号处理程序.当用户输入(ctrl)(c)时,将显示其历史记录.

当我的程序终止时,我需要将历史存储在一个文件中.有没有一种简单的方法可以检测我的程序何时退出?或者我需要为每种类型的信号((ctrl)(d),pausebreak等)设置信号处理程序.

小智 5

atexit()您可能正在寻找,请参阅手册页:man 3 atexit

用法类似于:

#include <stdlib.h>

static void save_the_file(void)
{
    /* ... */
}

int main()
{
    atexit(save_the_file);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用destructor属性(GCC/Clang):

static __attribute__((destructor)) void save_the_file(void)
{
     /* your code */
}
Run Code Online (Sandbox Code Playgroud)