2014-09-05 8 views
-1

Я разрабатываю одно приложение, в котором есть один сценарий, в котором я пытаюсь заблокировать запущенное приложение, убив идентификатор процесса (PID запущенного приложения) через терминал, используя следующий код. К следующему методу я передаю имя запущенного приложения.Как скрыть предупреждение, когда процесс был убит?

Код сниппета:

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

На этот раз я получаю одно сообщение предупреждения приводится ниже

«Нажмите Возобновить, чтобы открыть приложение снова Нажмите Отчет, чтобы увидеть более подробную информацию и. отправьте отчет в компанию Apple "

Я хочу скрыть это сообщение для пользователя. Поэтому, пожалуйста, предложите мне, если есть выход.

+0

, пожалуйста, оставьте комментарий вместе с правом голоса. –

+0

Если вы хотите убить его, не получая сообщение, вы должны использовать сигнал '9', а не сигнал' 6' – Petesh

+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 (ака убивать с особой силой), то он не сообщает, как приложение расторгнув, поскольку они, что считается «Намерение «сигналы - то есть вы намеренно пытаетесь убить процесс и в этом случае не должны получать сообщение в этом случае.

Смежные вопросы