C 由于atexit()函数,关闭键盘记录器时出错

C 由于atexit()函数,关闭键盘记录器时出错,c,function,logging,atexit,C,Function,Logging,Atexit,当我的代码中有一个atexit()函数时,当关闭我的键盘记录器时,我得到一个分段错误(内核转储)。这是令人困惑的,因为只有当有人试图退出程序时才应调用atexit()函数(而不仅仅是在发出关闭键盘记录器的命令时) 如果我去掉main中的atexit(final)行,一切正常。但是我需要在代码中使用atexit()函数来处理人员退出shell时发生的事情 提前感谢。此代码甚至无法编译。main()函数不完整,缺少几个变量声明。很抱歉,我删除了变量声明和不相关的代码。我的实际main有一个返回O和所

当我的代码中有一个
atexit()
函数时,当关闭我的键盘记录器时,我得到一个
分段错误(内核转储)
。这是令人困惑的,因为只有当有人试图退出程序时才应调用
atexit()
函数(而不仅仅是在发出关闭键盘记录器的命令时)

如果我去掉main中的
atexit(final)
行,一切正常。但是我需要在代码中使用
atexit()
函数来处理人员退出shell时发生的事情


提前感谢。

此代码甚至无法编译。main()函数不完整,缺少几个变量声明。很抱歉,我删除了变量声明和不相关的代码。我的实际main有一个返回O和所有内容:)如果这准确地反映了您的真实代码,则每次通过输入循环都会注册
atexit
(和
信号
)。如果是这种情况,final将被多次调用,并且可能对尝试读取已删除的文件反应不好。Duck,我如何解决此问题?请提供一个尽可能小的测试程序,并演示您的问题。