现在我正在做这样的事情:
NSString *pullProcesses = @"ps axco pid,pcpu,user,command";
system([pullProcesses UTF8String]);
NSLog(pullProcesses);
虽然它的效率有点低,每次调用它时都会占用大约 15% 的 CPU。 有什么有效的方法可以获取进程列表及其使用的 CPU 数量吗?
此外,是否有办法将该进程列表分解为仅属于用户而非系统进程的进程?
我听说 NSTask 可能有效,但这并没有检查用户的所有进程,只检查了 dock 中的事件进程。
我也在阅读有关 NSWorkSpace 的内容,但我不确定最好的方法是什么。
谢谢!
最佳答案
嗯,-[NSWorkspace runningApplications]
将为您提供用户进程列表,由 NSRunningApplication
实例表示。 NSRunningApplication
有一个 processIdentifier
属性,保存其进程的 pid_t
,然后您可以将其传递给 ps
- 这可能更有效。
另请查看 Apple 的示例项目 "AppList" ;它演示了使用 NSWorkspace
和 NSRunningApplication
,虽然我不记得它是否显示 CPU 使用率。
关于objective-c - 高效获取进程和名称列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7406657/