Запуск команды с помощью NSTask возвращает ошибку

Я хочу запустить следующую команду из своего приложения с помощью NSTask:

sudo -u myusername launchctl load /Library/LaunchAgents/com.google.keystone.agent.plist

Вот код, который я делаю: NSPipe *pipe = [NSPipe pipe];

NSTask *task = [[NSTask alloc] init];
[task setLaunchPath: @"/bin/sh"];
[task setCurrentDirectoryPath:@"/"];
[task setStandardError:pipe];

NSArray *arguments = nil;
arguments = @[@"sudo",
              @"-u",
              @"myusername",
              @"launchctl",
              @"load",
              @"/Library/LaunchAgents/com.google.keystone.agent.plist"];

[task setArguments: arguments];

NSFileHandle * read = [pipe fileHandleForReading];

[task launch];
[task waitUntilExit];

NSData * dataRead = [read readDataToEndOfFile];
NSString * output = [[NSString alloc] initWithData:dataRead encoding:NSUTF8StringEncoding];
NSLog(@"output: %@", output);

После обработки я получаю сообщение об ошибке ниже:

/bin/sh: sudo: нет такого файла или каталога


person Serhii    schedule 10.06.2014    source источник


Ответы (1)


Я нашел решение:

arguments = @[@"-c",
              @"sudo -u myusername launchctl load /Library/LaunchAgents/com.google.keystone.agent.plist"];
person Serhii    schedule 10.06.2014