Поэтому я просто хочу знать, когда запускается и закрывается стороннее приложение.
Сейчас я просто запускаю цикл, который проверяет это:
- (BOOL)isRunning:(int)AppPid{
ProcessSerialNumber psn = { kNoProcess, kNoProcess };
OSStatus err = GetProcessForPID(AppPid, &psn);
if ( err != noErr ){
NSLog(@"Error %d", err);
return NO;
}
return YES;
}
Проблема, с которой я сталкиваюсь, заключается в том, что если я вызову эту функцию слишком часто (скажем, 50 раз в секунду), она в конечном итоге завершится с ошибкой и скажет, что процесс не выполняется, когда он на самом деле.
Это может происходить раз в 10 минут или 5 раз подряд, это непредсказуемо.
Мой вопрос - есть ли другой простой способ через Cocoa / Objective-C определить, запущен ли процесс (который не включает в себя системную задачу, вызывающую ps, поскольку выполнение этого 50 раз в секунду не является умным)?