通过Cocoa终止进程

Ret*_*Val 4 macos cocoa process terminate

如果我终止自己,只需使用它[NSApp terminate: nil],它的效果非常好.但是,如果我想终止另一个进程,例如活动监视器,我该怎么办?

为了获得进程列表,我使用了

NSArray* processlist = [[NSWorkspace sharedWorkspace] runningApplications];
Run Code Online (Sandbox Code Playgroud)

我对吗?但我怎么能由可可终止一个进程,不能使用killKillProcess(<#const ProcessSerialNumber *inProcess#>)killpd或类似的,我刚开始学习可可,所以也许我需要一些简单的示例代码或一些关键字,可以帮助我找到的文件.谢谢您的帮助.

Ken*_*agh 5

-[NSWorkspace runningApplications]返回一个NSRunningApplication对象数组. NSRunningApplication有一个方法-[NSRunningApplication terminate].因此,如果您正在寻找特定的应用程序,您可以像这样终止它:

-(void)killProcessesNamed:(NSString*)appName
{
    for ( id app in [[NSWorkspace sharedWorkspace] runningApplications] ) 
    {
        if ( [appName isEqualToString:[[app executableURL] lastPathComponent]] ) 
        {
            [app terminate];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您也可以调用forceTerminate强制应用程序退出而不进行正常的退出过程.(它不会要求保存更改等)

NSRunningApplication根据您是否正在搜索基于包ID或PID的进程,还可以使用其他方法使此过程更简单.