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

ゴミ箱を空にしたいだけの場合は、強引に実行するのではなく、AppleScript などを使用して Finder に処理させます。

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 に答える