通过NSTask执行bash命令的结果

时间:2017-07-28 20:20:46

标签: objective-c cocoa nstask

我有一个在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:]是否返回执行该命令的成功或失败状态,并保存状态以便随后检查。我怎样才能得到这个结果?

2 个答案:

答案 0 :(得分:1)

  

我想知道[task setArguments:]是否返回执行该命令的成功或失败状态,并保存状态以便在之后进行检查。

为什么你认为设置尚未启动和运行的任务的参数可能会返回运行命令的状态?

  

我怎样才能得到这个结果?

阅读NSTask及其方法waitUntilExit及其属性terminationStatus的文档。

也就是说,正如@ItaiFerber在评论中提出的那样,希望这只是一个例子而你并没有真正使用NSTask来运行cp

答案 1 :(得分:0)

    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){}