2011-09-13 39 views
3

现在我做这样的事情的清单:有效地获取流程及名称

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

这有点低效虽然,每次拉它叫时间大约15%的CPU。 有没有什么有效的方式让我得到一个进程列表和它使用的CPU数量?

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

我听说NSTask可能会工作,但这不是检查用户的所有进程,只检查在dock中活动的进程。

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

谢谢!

回答

8

那么,-[NSWorkspace runningApplications]会为您提供用户进程列表,由NSRunningApplication实例表示。一个NSRunningApplication有一个processIdentifier财产,持有pid_t它的过程,然后你可以传递给ps - 这可能会更有效率。

也看看苹果的示例项目"AppList";它演示了使用NSWorkspaceNSRunningApplication,但我不记得它是否显示CPU使用率。

+0

这对我有效,谢谢! – arooo