Как проверить, существует ли процесс mac по имени процесса

0

Мне нужно убить Mac-процесс, но до этого мне нужно проверить, действительно ли он существует или нет?

Я попытался использовать систему методов C++ system("killall process_name"); убить процесс по имени.

Но я думаю, что я должен проверить, действительно ли работает процесс или нет. Может кто-нибудь, пожалуйста, дайте мне знать, как это можно сделать?

  • 2
    Что если он закончится после того, как вы проверите, но до того, как убьете его? «Делай или не делай; проверки нет».
  • 0
    На самом деле вы должны использовать сигналы для этого, а не system . И кроме того, не имеет значения, существует он или нет, если он это сделает, он получит сигнал от killall если этого не произойдет, тогда ничего не произойдет.
Показать ещё 6 комментариев
Теги:
macos
cocoa

2 ответа

2
Лучший ответ

Вы можете безопасно использовать 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];
  • 0
    вау..хорошо..очень полезно..спасибо
2
BOOL processIsRunning = system("ps -Ac | grep 'AProcessName' > /dev/null") == 0;

Или, если вы хотите проверить строку в частности:

BOOL processIsRunning = system("ps -ef | grep 'AUniqueString' | grep -iv grep > /dev/null") == 0;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню