1

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

// 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: 不允许操作

有任何想法吗?

4

2 回答 2

3

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

于 2013-05-20T13:01:55.027 回答
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];
于 2013-05-20T13:09:21.830 回答