沙箱和使用system()运行/ usr / bin / purge

时间:2013-07-20 08:05:28

标签: objective-c cocoa osx-mountain-lion sandbox

在Mac App Store上的应用中,我正在执行以下操作:

system("/usr/bin/nice -n 20 /usr/bin/purge &> /dev/null &");

这很好用,但现在我正在尝试提交新版本,他们迫使我启用Sandbox。但是,使用沙箱时,该调用失败,在控制台中显示如下消息:

7/20/13 12:58:59.000 AM kernel[0]: Sandbox: sh(28537) deny file-read-data /dev/ttys000
7/20/13 12:58:59.968 AM purge[28538]: bootstrap_look_up(): Permission denied
7/20/13 12:59:00.000 AM kernel[0]: Sandbox: purge(28538) deny mach-lookup com.apple.appleprofilepolicyd
7/20/13 12:59:00.521 AM purge[28538]: <CPDevice.m:3813> Unable to create new counter client.
7/20/13 12:59:00.523 AM purge[28538]: <CPOSX.m:1188>    Unable to get user client so as to poke the kernel.
7/20/13 12:59:00.000 AM kernel[0]: Sandbox: purge(28538) deny iokit-open ApplePerformanceCounterManagerUserClient
7/20/13 12:59:00.000 AM kernel[0]: Sandbox: purge(28538) deny iokit-open AppleProfileUtilitiesUserClient
7/20/13 12:59:00.000 AM kernel[0]: AppleProfileUtilitiesUserClient: bad busy count (0,-1)
7/20/13 12:59:00.000 AM kernel[0]: Backtrace 0xffffff802d22d4d2 0xffffff802d231fc9 0xffffff802ceb3137 0 0 0 0

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

关于NSTask和Sandboxing的官方消息是“一些可执行文件可能有用”。对我而言,这意味着“不要指望它”。目前苹果开发论坛关于此问题有很多问题,purge肯定会被列入黑名单。