如何在进程被杀死时隐藏警报消息?

时间:2014-09-05 10:05:59

标签: objective-c xcode macos

我正在开发一个应用程序,因为有一个场景,我试图通过终端使用以下代码终止进程ID(运行应用程序的PID)来阻止运行应用程序。对于以下方法,我传递的是运行应用程序的名称。

代码段:

-(void)lock:(NSString *)name
{
    NSString *kil = [NSString stringWithFormat:@"killall -6 %@",name];
    system([kil UTF8String]);
}

那个时候我收到一条警告信息,如下所示

  

“点击重新打开再次打开该应用程序。点击报告查看更多详细信息并向Apple发送报告”

我想将该警报消息隐藏给用户。如果有任何出路,请建议我。

1 个答案:

答案 0 :(得分:3)

出乎意料地退出'有几个原因。信息。由于某些信号(SIGABRTSIGSEGVSIGBUS)而导致的流程终止是最常见的原因。默认情况下,完整的信号列表:

 3     SIGQUIT      quit program
 4     SIGILL       illegal instruction
 5     SIGTRAP      trace trap
 6     SIGABRT      abort program (formerly SIGIOT)
 7     SIGEMT       emulate instruction executed
 8     SIGFPE       floating-point exception
 10    SIGBUS       bus error
 11    SIGSEGV      segmentation violation
 12    SIGSYS       non-existent system call invoked

作为开发人员,您可以拦截这些信号并导致不同的行为,但如果信号处理程序保留其默认值,则这些信号中的任何一个都将触发该行为。

当您发送-6信号时,您正在发送SIGABORT信号,从而触发该信息。

如果您使用TERM-15,默认为kill)或使用KILL-9也称为极力杀戮)杀死它,那么它不会# 39; t报告申请已被终止,因为这些是被认为是'意图'信号 - 即你故意试图杀死进程,因此在这种情况下不应该收到消息。