2017-06-14 68 views
0

我想从我的应用程序运行终端命令/脚本,所有工作正常,但是当一个命令是错误的,无法执行我得到像这样的东西这样的:NSTask得到通知当一个命令不能执行“命令未找到”

enter image description here

但这种“/斌/庆典:行...”字符串是不是在我的输出字符串我从任务获得,有没有在我的应用程序或获取收到这些错误的任何方式以任何方式通知他们发生?

我的代码

// Create a new task 
    let task: Process = Process() 
    task.environment = env 
    task.launchPath = "/usr/bin/env" 
    task.arguments = ["/bin/bash", "-c", command.scriptCode] 

    // Assign output pipes 
    let pipe: Pipe = Pipe() 
    let outHandle: FileHandle = pipe.fileHandleForReading 
    task.standardOutput = pipe 

    outHandle.readabilityHandler = { pipe in 
     if let line = String(data: pipe.availableData, encoding: String.Encoding.utf8) { 
      if line.contains("command not found") { 
       // never triggered 
      } else { 
       print("New ouput: \(NSDate())\(line)") 
      } 
     } else { 
      print("Error decoding data: \(pipe.availableData)") 
     } 
    } 
+1

bash会将消息写入stderr,因此您可以像捕获task.standardOutput一样捕获'task.standardError'。 –

+0

感谢您按照预期工作,Xcode只会自动完成standardOutput:o –

回答

2

你正在寻找的东西是NSTaskProcess类的standardError财产。像standardOutput一样将管道分配给此属性。