Objective c NSTask+ps+应用程序沙盒=错误

Objective c NSTask+ps+应用程序沙盒=错误,objective-c,xcode,sandbox,Objective C,Xcode,Sandbox,我试图通过OSX上的NSTask使用bash ps命令获取进程列表 当我打开应用程序沙盒时,应用程序崩溃,我在控制台中遇到以下错误: 14.06.14 2:16:35,426 sandboxd[356]: ([74340]) MyApp(74340) deny forbidden-exec-sugid 这个问题有什么解决办法吗 代码片段: NSTask *topTask = [NSTask new]; [topTask setLaunchPath:@"/bin/ps"]; [topTask s

我试图通过OSX上的NSTask使用bash ps命令获取进程列表

当我打开应用程序沙盒时,应用程序崩溃,我在控制台中遇到以下错误:

14.06.14 2:16:35,426 sandboxd[356]: ([74340]) MyApp(74340) deny forbidden-exec-sugid
这个问题有什么解决办法吗

代码片段:

NSTask *topTask = [NSTask new];
[topTask setLaunchPath:@"/bin/ps"];
[topTask setArguments:[NSArray arrayWithObjects:
                       @"-eo", @"pid,pcpu,rss,comm", // output columns
                       nil]];
ps是一个setuid根进程,因此不能从沙箱中运行

沙箱中可以有pid、rss、comm,但不能有pcpu,从中可以得到一系列的数据

您可能可以使用或sysctl实现等效的功能


根据您希望实现的目标,这里有一个有趣的链接,它显示libproc也不会提供其他进程的CPU信息。proc_pid_rusage可以完美地获得cpu时间,但如果您激活沙箱,则您只能获得自己的cpu时间,而不管您给出了哪种pid: