加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – NSTask运行脚本

发布时间:2020-12-16 06:59:53 所属栏目:百科 来源:网络整理
导读:我试图用NSTask运行以下命令: $sudo launchctl load /Users/admin/Library/LaunchAgents/com.devdaily.crontabtest.plist 以下是我使用的代码: NSTask *server = [NSTask new];[server setLaunchPath:@"/bin/launchctl"];[server setArguments:[NSArray ar
我试图用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命令,它不起作用.我怎样才能解决这个问题?

解决方法

不幸的是,你做不到.因为无法输入密码.

但是,您仍然可以使用NSAppleScript而不是NSTask来运行bash命令:
写一个像:

使用管理员权限执行shell脚本[您的命令]

系统将要求您输入管理员密码.

例:

NSDictionary *error = [NSDictionary new]; 
NSString *script =  @"do shell script "launchctl load /Users/admin/Library/LaunchAgents/com.devdaily.crontabtest.plist" with administrator privileges";  
NSAppleScript *appleScript = [[NSAppleScript new] initWithSource:script]; 
if ([appleScript executeAndReturnError:&error]) {
  NSLog(@"success!"); 
} else {
  NSLog(@"failure!"); 
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读