2014-06-14 2 views
2

나는 OS X의에 NSTask를 통해 bash는 "PS"명령으로 프로세스 목록을 얻으려고NSTask + 추신 + 응용 프로그램 샌드 박스 = 오류

내가 응용 프로그램 샌드 박스, 응용 프로그램 충돌을 켜고 난이 오류가 발생했습니다 콘솔 :

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]]; 

답변

0

ps 같은 샌드 박스 내에서 실행할 수 없습니다하는이 setuid 루트 과정이며. 당신이 샌드 박스 내부에있을 수있는 일

당신은 아마 libproc() 또는 sysctl을 함께 동일한 기능을 달성 할 수 당신에게 NSRunningApplication

의 NSArray를 줄 것이다 pid, rss, comm하지만 [[NSWorkspace sharedWorkspace] runningApplications]에서하지 pcpu입니다. Similar question for statistics

것은 당신이 달성하고 싶은 무엇을 따라 여기 observing processes: TN2050

+0

에 흥미있는 링크는 당신에게 다른 processses에 CPU 정보를 제공하지 않습니다 또한 libproc와 같은데입니다. 'proc_pid_rusage'는 CPU 시간을 얻기 위해 완벽하게 작동하지만, 샌드 박스를 활성화하면 PID에 관계없이 자신의 CPU 시간 만 얻을 수 있습니다. –

관련 문제