2011-06-15 50 views
3

有谁知道Xcode发送什么信号来杀死正在运行的程序?我需要一个处理程序在程序被杀之前做一些清理。我已经尝试过SIGINT和SIGTERM,但它似乎不起作用。Xcode信号到结束应用程序

回答

0

它发送sinal SIGKILL。要验证您可以在调试模式下打开任何应用程序,并在停止任务时检查控制台。

但是,如果它是杀-9你不能陷阱的信号。

你想干什么样的清理?我不认为有必要处理该事件,因为您正在从XCode的目的中进行此操作。如果你试图将这个信号发送到Xcode之类的终端之外的进程,那么这很有意义。

+0

我使用'sem_open'来初始化一个posix信号量。我需要调用'sem_unlink'来释放信号量的字符串标识符(应用程序运行在一个无限循环中,它不应该停止,所以我不能从主程序中完成)。我也尝试过SIGKILL,但它似乎没有工作。 – Saphrosit 2011-06-16 12:27:38

+0

@Saphrosit:我不认为你可以通过捕获信号并为它写一个处理程序来处理这种情况。你可以在代码中使用boost库吗?我相信你可以使用scooped指针或类似的东西? (我不知道是否有类似的东西挖出信号,但你可以在这个方向走是肯定的) – MacGeek 2011-06-16 12:55:15

+1

由于信号标识被保存在内核中,我解决了调用另一个程序只需拨打'sem_unlink'。只是一个解决方法,但它的工作原理。不管怎么说,还是要谢谢你! – Saphrosit 2011-06-20 10:44:33

0

你不应该那样做。

使用您的AppDelegate的相应代理方法。

+0

当调试器终止您的过程时,不会调用应用程序委托方法。 – 2011-06-16 12:14:02

+0

@Mike Weller确实如此,但你不应该依赖那个 - 因为你的应用可能会在真实设备上被杀死,而且没有这些触发器。国际海事组织,这是一个错误的建立代码来处理这种情况进入应用程序(更多的设计错误)。 – Eiko 2011-06-16 13:29:47

相关问题