【问题标题】:Result of a bash command executed through NSTask通过 NSTask 执行的 bash 命令的结果
【发布时间】:2017-07-28 20:20:45
【问题描述】:
我有这个在 Objective-C 中使用 NSTask 的例子
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/bash"];
[task setArguments:@[ @"-c", @"cp /Directory/file /users/user_name/Desktop" ]];
[task launch];
我想知道[task setArguments:] 是否返回执行该命令的成功或失败状态,并保存状态以供以后检查。我怎样才能得到这个结果?
【问题讨论】:
标签:
objective-c
cocoa
nstask
【解决方案1】:
我想知道[task setArguments:]是否返回执行该命令的成功或失败状态,并保存状态以供以后检查。
为什么您认为设置尚未启动和运行的任务的参数可能会返回运行命令的状态?
我怎样才能得到这个结果?
阅读NSTask 的文档,它的方法waitUntilExit 和它的属性terminationStatus。
也就是说,正如@ItaiFerber 在评论中提出的那样,希望这只是一个示例,您并没有真正使用NSTask 来运行cp。
【解决方案2】:
NSPipe *pipe = [[NSPipe alloc] init];
NSFileHandle *file = pipe.fileHandleForReading;
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/bash"];
[task setArguments:@[ @"-c", @"cp /Directory/file /users/user_name/Desktop" ]];
task.standardOutput = pipe;
[task launch];
if(task.isRunning)
[task waitUntilExit];
int status = [task terminationStatus];
if(status == 0){}