我想在C程序退出时执行内务处理功能。我知道atexit()
可以帮助注册正常退出的函数,但不适用于SIGINT或SIGQUIT等信号。我不想为所有这些信号注册信号处理程序,其默认行为是终止程序。我只是想注册一个函数,它将在程序终止之前执行,无论原因是什么。我怎么能在C中做到这一点?
答案 0 :(得分:2)
您可以将您的c程序作为子进程运行吗? 你可以使用任何exec系列函数。
如果您的子进程被正常或异常终止,那么从父进程查询子进程的退出状态有更好的选择。
根据你的说法,你应该能够在父母中调用你的功能。
答案 1 :(得分:0)
我不是C / C ++开发人员,但看看这个可能对您有帮助的问题。 Shutdown Hook c++。 Java中有一种非常好的方法,但在C语言中,我认为没有专门的功能来满足目的。
答案 2 :(得分:0)
如果您已经知道要接收的信号类型,则可以在c中编写信号处理程序。
对于Linux,请检查以下答案:Ctrl + C interrupt event handling in Linux
对于Windows,请检查以下链接: C++: Continue execution after SIGINT