通过Cocoa终止进程

时间:2012-04-16 13:59:54

标签: macos cocoa process terminate

如果我自行终止,只需使用[NSApp terminate: nil],它就会很好用。但是,如果我想终止另一个进程,例如活动监视器,我该怎么办?

要获取进程列表,我使用

NSArray* processlist = [[NSWorkspace sharedWorkspace] runningApplications];

我是对的吗?但是我如何通过Cocoa终止进程,而不是使用killKillProcess(<#const ProcessSerialNumber *inProcess#>)killpd或类似的东西,我只是开始学习Cocoa,所以也许我需要一些简单的示例代码或一些关键字可以帮助我找到文件。谢谢你的帮助。

1 个答案:

答案 0 :(得分: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];
        }
    }
}

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

您可以使用NSRunningApplication的其他方法来简化此过程,具体取决于您是否正在搜索基于捆绑ID或PID的流程。