Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa Catch应用程序从LaunchDeamon终止 我有一个可可基金会工具,我作为一个启动程序运行。当系统通过重新启动或关机(甚至是launchctl unload)终止应用程序时,是否有办法捕获此事件,以便执行一些最终确定功能_Cocoa - Fatal编程技术网

Cocoa Catch应用程序从LaunchDeamon终止 我有一个可可基金会工具,我作为一个启动程序运行。当系统通过重新启动或关机(甚至是launchctl unload)终止应用程序时,是否有办法捕获此事件,以便执行一些最终确定功能

Cocoa Catch应用程序从LaunchDeamon终止 我有一个可可基金会工具,我作为一个启动程序运行。当系统通过重新启动或关机(甚至是launchctl unload)终止应用程序时,是否有办法捕获此事件,以便执行一些最终确定功能,cocoa,Cocoa,AllNSObject子类在死之前调用一个方法:。还有用于处理崩溃的NSSetUncaughtExceptionHandler。您正在讨论的所有案例都将SIGTERM发送到流程。您希望为此添加一个信号处理程序。有关和,请参阅手册页。仔细阅读警告。在信号处理程序中,只有某些函数可以合法调用(原则上,您永远不应该分配堆内存)。通常,最好只使用处理程序设置一个标志,告诉主线程终止 如果您使用的是运行循环,您可能还想查看如何使用运行循环处理SIGTERM 请参阅《守护进程和服务编程指南》中的,以了解将向

All
NSObject
子类在死之前调用一个方法:。还有用于处理崩溃的
NSSetUncaughtExceptionHandler

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

如果您使用的是运行循环,您可能还想查看如何使用运行循环处理
SIGTERM


请参阅《守护进程和服务编程指南》中的,以了解将向进程发送哪些信号的完整详细信息。

我有一台服务器,需要知道客户端计算机何时关闭。发送http json请求会比信号陷阱期间发生的情况更严重吗?是的。您应该安排在主循环上进行此操作。基本上,您应该抓住SIGTERM,在内部设置一些内容,说“我现在应该退出”并返回。然后你的主程序应该记下“我现在应该退出”,你应该做任何你需要做的事情(比如和服务器交谈),然后退出。尝试在信号处理器的中间做所有这些都是危险的,并且可以挂起程序(即使是非常不幸的话,也可以将一个内核插入到100%的使用率)。谢谢罗布-我已经修改了我的代码以包括<代码>信号(SIGPRONE,SIGCAM)< /C>。如果我执行sudo launchctl unload,它会被调用,但在系统重新启动时它不会被调用。有关可用的所有挂钩方法,请参阅我上面添加的链接。但是,正常重新启动应发送SIGTERM。请确保您没有调用
EnableSuddenInternation
,但这是一项相当新的技术,您可能不会意外地使用它()。我并没有故意启用SuddenInternation。不过,在重启期间接收到SIGNATH仍然没有运气。因为我使用基础工具,所以我的主要类不是NSnObjin任何情况,没有承诺“代码>终结/<代码>将被调用,特别是响应于未经处理的SIGTION,或者在非GC环境中。