在Mac应用程序沙箱中执行命令?

时间:2013-05-20 13:00:08

标签: objective-c macos cocoa sandbox

我需要我的应用程序在Sandbox中执行命令。这是我到目前为止的代码:

// Set up the task
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/bash"];
NSArray *args = [NSArray arrayWithObjects:@"-l",
                 @"-c",
                 @"rm -rf .Trash/*",
                 nil];
[task setArguments: args];

// Set the output pipe.
NSPipe *outPipe = [[NSPipe alloc] init];
[task setStandardOutput:outPipe];
[task launch];

我得到的日志输出为:

  

/ bin / bash:/ etc / profile:不允许操作

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

沙盒中不允许使用Sudo命令。

答案 1 :(得分:2)

如果你只是想清空垃圾,而不是试图通过蛮力来做,只需让Finder处理它,例如使用AppleScript:

tell application "Finder"
    empty trash
end tell

您可以直接从Objective-C运行AppleScript命令,如下所示:

NSAppleScript *command = [[NSAppleScript alloc] initWithSource:@"tell application \"Finder\" to empty trash"];
[command executeAndReturnError:nil];