【发布时间】:2012-05-08 14:53:30
【问题描述】:
我正在尝试使用 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 的内置升级实用程序)。其次,我猜 sudo 没有被sh加载,因为它没有加载路径。
标签: objective-c nstask