Я пытаюсь запустить следующую команду с NSTask:
$sudo launchctl load /Users/admin/Library/LaunchAgents/com.devdaily.crontabtest.plist
Ниже приведен код, который я использую:
NSTask *server = [NSTask new];
[server setLaunchPath:@"/bin/launchctl"];
[server setArguments:[NSArray arrayWithObjects:@"load",@"com.devdaily.crontabtest.plist",nil]];
[server setCurrentDirectoryPath:@"/Users/admin/Library/LaunchAgents/"];
NSPipe *outputPipe = [NSPipe pipe];
[server setStandardInput:[NSPipe pipe]];
[server setStandardOutput:outputPipe];
[server launch];
[server waitUntilExit]; // Alternatively, make it asynchronous.
[server release];
Однако это не работает из-за команды sudo
. Как я могу это исправить?
sudo
в неконсольной среде не очень полезно, потому что нет простого способа ввести пароль (да, вы можете использовать стандартный канал ввода, но гораздо лучше использовать встроенные утилиты эскалации OS X). Во-вторых, я предполагаю, чтоsh
не загружает sudo, потому что он не загружает путь. - person RC Howe   schedule 08.05.2012