1

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

4

3 回答 3

2

你能把你的c程序作为子进程运行吗?您可以为此使用任何 exec 系列功能。

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

据此,您应该能够在父级中调用您的函数。

于 2012-12-27T17:26:46.127 回答
0

好吧,我不是 C/C++ 开发人员,但看看这个可能对你有帮助的问题。关闭挂钩 c++。尽管在 Java 中有一个非常好的方法,但在 CI 中不认为有一个专门的函数来实现这个目的。

于 2012-12-27T17:28:12.863 回答
0

如果您已经知道您将收到什么类型的信号,您可以在 c 中编写一个信号处理程序。

对于 Linux,请检查此答案:Ctrl + C 中断事件处理 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

于 2020-06-12T08:37:18.797 回答