我需要杀死一个mac进程但在此之前我需要检查,如果它确实存在或不存在?
我尝试使用C ++方法system("killall process_name");
按名称终止进程。
但我认为我还应该检查进程是否实际运行。有谁能告诉我,怎么做?
答案 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;