如何通过进程名称检查 mac 进程是否存在

How to check a mac process exists by process name

我需要终止一个 mac 进程,但在此之前我需要检查它是否确实存在?

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

但我想我还应该检查进程是否实际运行。谁能告诉我怎么办?

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

由于您已标记 Objective-C,我假设您对 cocoa 解决方案没有问题。如果您手头有进程名称,这是另一种终止进程的简单方法。它使用苹果脚本。这里不用检查是不是运行。

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;