如何通过进程名称检查 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;
我需要终止一个 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;