4

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

要获取进程列表,我使用

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

我对吗?但是如何通过 Cocoa 终止进程,而不是使用killor KillProcess(<#const ProcessSerialNumber *inProcess#>)or killpdor 之类的东西,我刚开始学习 Cocoa,所以也许我需要一些简单的示例代码或一些关键字来帮助我找到文档。谢谢您的帮助。

4

1 回答 1

5

-[NSWorkspace runningApplications]返回一个对象数组NSRunningApplicationNSRunningApplication有方法-[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 搜索进程。

于 2012-04-16T15:16:00.280 回答