程序正常退出或异常退出时执行功能

时间:2012-12-27 17:12:04

标签: c unix signals exit

我想在C程序退出时执行内务处理功能。我知道atexit()可以帮助注册正常退出的函数,但不适用于SIGINT或SIGQUIT等信号。我不想为所有这些信号注册信号处理程序,其默认行为是终止程序。我只是想注册一个函数,它将在程序终止之前执行,无论原因是什么。我怎么能在C中做到这一点?

3 个答案:

答案 0 :(得分:2)

您可以将您的c程序作为子进程运行吗? 你可以使用任何exec系列函数。

如果您的子进程被正常或异常终止,那么从父进程查询子进程的退出状态有更好的选择。

根据你的说法,你应该能够在父母中调用你的功能。

答案 1 :(得分:0)

我不是C / C ++开发人员,但看看这个可能对您有帮助的问题。 Shutdown Hook c++。 Java中有一种非常好的方法,但在C语言中,我认为没有专门的功能来满足目的。

答案 2 :(得分:0)

如果您已经知道要接收的信号类型,则可以在c中编写信号处理程序。

对于Linux,请检查以下答案:Ctrl + C interrupt event handling in Linux

一些其他参考: https://www.gnu.org/software/libc/manual/html_node/Signal-Handling.html#:~:text=24%20Signal%20Handling,disconnection%20of%20a%20phone%20line

对于Windows,请检查以下链接: C++: Continue execution after SIGINT