如何按进程名称检查mac进程

时间:2015-01-01 12:02:00

标签: c++ objective-c c macos cocoa

我需要杀死一个mac进程但在此之前我需要检查,如果它确实存在或不存在?

我尝试使用C ++方法system("killall process_name");按名称终止进程。

但我认为我还应该检查进程是否实际运行。有谁能告诉我,怎么做?

2 个答案:

答案 0 :(得分:2)

您可以安全地使用killall - 您已经使用的那个。即使该过程不存在,它也是无害的。

由于您已经标记了Objective-C,我认为您可以使用可可解决方案。如果您手头有进程名称,这是杀死进程的另一种简单方法。它使用苹果脚本。在这里,您无需检查它是否正在运行。

NSString *processName = @"Microsoft Outlook";
NSString *scriptSource = [NSString stringWithFormat:@"tell application \"%@\" to quit",processName];
NSAppleScript *script = [[NSAppleScript alloc] initWithSource:scriptSource];
[script executeAndReturnError:nil];

答案 1 :(得分:2)

BOOL processIsRunning = system("ps -Ac | grep 'AProcessName' > /dev/null") == 0;

或者,如果您想特别检查字符串:

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