我有一个 Cocoa 基础工具,作为 LaunchDeamon 运行。当应用程序被系统终止时,无论是通过重新启动还是关闭(甚至 launchctl 卸载),有没有办法可以捕获此事件,以便我可以执行一些最终确定功能?
最佳答案
您正在讨论的所有情况都会向进程发送SIGTERM
。您想为此添加一个信号处理程序。请参阅 signal 的手册页和 sigaction 。仔细阅读警告。在信号处理程序期间,只有某些函数是合法调用的(原则上您不应该分配堆内存)。一般来说,最好只使用处理程序来设置一个标志来告诉主线程终止。
您可能还想查看PreLoginAgents有关如何使用运行循环处理 SIGTERM
的示例(如果您使用的是运行循环)。
参见Terminating Processes有关将向您的进程发送哪些信号的完整详细信息,请参阅《守护程序和服务编程指南》。
关于cocoa - 从 LaunchDeamon 捕获应用程序终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8100944/