我正在开发一个应用程序,因为有一个场景,我试图通过终端使用以下代码终止进程ID(运行应用程序的PID)来阻止运行应用程序。对于以下方法,我传递的是运行应用程序的名称。
代码段:
-(void)lock:(NSString *)name
{
NSString *kil = [NSString stringWithFormat:@"killall -6 %@",name];
system([kil UTF8String]);
}
那个时候我收到一条警告信息,如下所示
“点击重新打开再次打开该应用程序。点击报告查看更多详细信息并向Apple发送报告”
我想将该警报消息隐藏给用户。如果有任何出路,请建议我。
答案 0 :(得分:3)
出乎意料地退出'有几个原因。信息。由于某些信号(SIGABRT
,SIGSEGV
,SIGBUS
)而导致的流程终止是最常见的原因。默认情况下,完整的信号列表:
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报告申请已被终止,因为这些是被认为是'意图'信号 - 即你故意试图杀死进程,因此在这种情况下不应该收到消息。