Мне нужно убить Mac-процесс, но до этого мне нужно проверить, действительно ли он существует или нет?
Я попытался использовать систему методов C++ system("killall process_name");
убить процесс по имени.
Но я думаю, что я должен проверить, действительно ли работает процесс или нет. Может кто-нибудь, пожалуйста, дайте мне знать, как это можно сделать?
Вы можете безопасно использовать killall - тот, который вы уже используете. Это безвредно, даже если процесс не существует.
Поскольку вы отметили Objective-C, я предполагаю, что вы в порядке с cocoa-решениями. Это еще один простой способ убить процесс, если у вас есть имя процесса в руке. Он использует сценарий Apple. Здесь вам не нужно проверять, работает ли он или нет.
NSString *processName = @"Microsoft Outlook";
NSString *scriptSource = [NSString stringWithFormat:@"tell application \"%@\" to quit",processName];
NSAppleScript *script = [[NSAppleScript alloc] initWithSource:scriptSource];
[script executeAndReturnError:nil];
BOOL processIsRunning = system("ps -Ac | grep 'AProcessName' > /dev/null") == 0;
Или, если вы хотите проверить строку в частности:
BOOL processIsRunning = system("ps -ef | grep 'AUniqueString' | grep -iv grep > /dev/null") == 0;
system
. И кроме того, не имеет значения, существует он или нет, если он это сделает, он получит сигнал отkillall
если этого не произойдет, тогда ничего не произойдет.