Cocoa - 防止系统关闭

时间:2011-04-01 11:18:57

标签: objective-c cocoa macos

嘿伙计们, 我还有一个问题,我在互联网上找不到答案。我希望你能帮助我。

我正在编写一个在后台运行的Cocoa应用程序,并为我完成了几项任务。如果我退出应用程序,我会显示NSAlert。一切都很好。但这是我的问题。此警报来自applicationShouldTerminate:方法内部。因此,如果我退出,则会触发此方法并显示警报。但是,即使我返回NSTerminateCancel,OSX也会退出应用程序并注销而无需等待响应。

如何强制操作系统停止从我的应用程序中注销/关闭,以便用户(我自己:-D)可以决定做什么。 (它只是一个对话框,询问是否应该保存完成的工作。)

我希望你能帮助我......

桑德罗

1 个答案:

答案 0 :(得分:0)

Mac OS X基于UNIX。当系统关闭时,发送SIGKILL信号以终止所有进程。但在此之前,会发送SIGTERM信号,通知进程将发生关闭。

我认为解决方案在于处理信号,即检测和阻止信号。关于这一点,您可以在GNU C Library: Signal Handling: Blocking Signals.

中找到指导

那里的示例可能与BSD有关,但您可能知道OS X核心是从BSD派生的,因此OS X支持它。此外,Objective-C支持C.