如果我终止自己,只需使用 [NSApp terminate: nil]
,效果很好。但如果我想终止另一个进程,例如事件监视器,我该怎么办?
要获取进程列表,我使用
NSArray* processlist = [[NSWorkspace sharedWorkspace] runningApplications];
我说得对吗?但是我如何通过 Cocoa 终止进程,而不是使用 kill
或KillProcess(<#const ProcessSerialNumber *inProcess#>)
或killpd
或者类似的东西,我刚刚开始学习Cocoa,所以也许我需要一些简单的示例代码或一些可以帮助我找到文档的关键字。感谢您的帮助。
最佳答案
-[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 来搜索进程。
关于macos - 通过 Cocoa 终止进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10175585/