【问题标题】:Efficiently Getting A List of Processes & Names有效地获取进程和名称列表
【发布时间】:2011-11-16 10:12:39
【问题描述】:

现在我正在做这样的事情:

NSString *pullProcesses = @"ps axco pid,pcpu,user,command";
system([pullProcesses UTF8String]);
NSLog(pullProcesses);

但它的效率有点低,每次调用它都会占用大约 15% 的 CPU。 有什么有效的方法可以让我获取进程列表和它正在使用的 CPU 数量吗?

此外,有没有办法将该进程列表分解为仅属于用户而不是系统进程的进程?

我听说 NSTask 可能有效,但这并没有检查用户的所有进程,只检查 Dock 中活动的进程。

我也在阅读有关 NSWorkSpace 的内容,但我不确定最好的方法是什么。

谢谢!

【问题讨论】:

    标签: objective-c macos xcode4 osx-lion


    【解决方案1】:

    好吧,-[NSWorkspace runningApplications] 将为您提供由NSRunningApplication 实例表示的用户进程列表。 NSRunningApplication 有一个 processIdentifier 属性,保存其进程的 pid_t,然后您可以将其传递给 ps - 这可能更有效。

    还可以查看名为 "AppList" 的 Apple 示例项目;它演示了使用 NSWorkspaceNSRunningApplication,虽然我不记得它是否显示 CPU 使用率。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      相关资源
      最近更新 更多