cocoa - 从 LaunchDeamon 捕获应用程序终止

标签 cocoa

我有一个 Cocoa 基础工具,作为 LaunchDeamon 运行。当应用程序被系统终止时,无论是通过重新启动还是关闭(甚至 launchctl 卸载),有没有办法可以捕获此事件,以便我可以执行一些最终确定功能?

最佳答案

您正在讨论的所有情况都会向进程发送SIGTERM。您想为此添加一个信号处理程序。请参阅 signal 的手册页和 sigaction 。仔细阅读警告。在信号处理程序期间,只有某些函数是合法调用的(原则上您不应该分配堆内存)。一般来说,最好只使用处理程序来设置一个标志来告诉主线程终止。

您可能还想查看PreLoginAgents有关如何使用运行循环处理 SIGTERM 的示例(如果您使用的是运行循环)。

参见Terminating Processes有关将向您的进程发送哪些信号的完整详细信息,请参阅《守护程序和服务编程指南》。

关于cocoa - 从 LaunchDeamon 捕获应用程序终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8100944/

相关文章:

不同类中的 2 个属性之间的 Cocoa 绑定(bind)

xcode - 获取 NSTextField 的 keyDown 事件

cocoa - 在 cocoa 中,如何重新排序一个窗口,使其位于所有其他窗口之上?

swift - NSSlider:如何同时发送值和 Action ?

objective-c - NSTask 调用命令top。获取错误

cocoa - NSTableView 中的自定义单元格

objective-c - 如何访问 NSBitmapImageRep 的像素?

objective-c - 在 Cocoa 中编写我自己的 @dynamic 属性

objective-c - 存储 4 个属性(NSPoints)位置的最有效方法是什么?

cocoa - 在 Cocoa 中打开新窗口时关闭旧窗口