Catch App终止于LaunchDaemon

时间:2011-11-11 22:53:47

标签: cocoa

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

2 个答案:

答案 0 :(得分:2)

您正在讨论的所有案例都会向此流程发送SIGTERM。您想为此添加信号处理程序。请参阅signalsigaction的手册页。仔细阅读警告。在信号处理程序中只有某些函数是合法的(原则上你永远不应该分配堆内存)。通常,最好只使用处理程序设置一个标志,告诉主线程终止。

如果您正在使用运行循环,您可能还需要查看PreLoginAgents有关如何使用运行循环处理SIGTERM的示例。

请参阅“守护进程和服务编程指南”中的Terminating Processes,详细了解将向您的进程发送哪些信号。

答案 1 :(得分:0)

所有NSObject子类在死亡前调用方法:- finalize。处理崩溃还有NSSetUncaughtExceptionHandler