【问题标题】:Launching command using NSTask returns error使用 NSTask 启动命令返回错误
【发布时间】:2014-06-10 09:41:54
【问题描述】:

我想使用 NSTask 从我的应用程序中启动以下命令:

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

这是我做的代码: NSPipe *pipe = [NSPipe 管道];

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: 没有这样的文件或目录

【问题讨论】:

    标签: objective-c daemon nstask start-stop-daemon


    【解决方案1】:

    我找到了解决方案:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      相关资源
      最近更新 更多