NSTask得到通知当一个命令不能执行“命令未找到”
问题描述:
我想从我的应用程序运行终端命令/脚本,所有工作正常,但是当一个命令是错误的,无法执行我得到像这样的东西这样的:NSTask得到通知当一个命令不能执行“命令未找到”
但这种“/斌/庆典:行...”字符串是不是在我的输出字符串我从任务获得,有没有在我的应用程序或获取收到这些错误的任何方式以任何方式通知他们发生?
我的代码
// 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)")
}
}
bash会将消息写入stderr,因此您可以像捕获task.standardOutput一样捕获'task.standardError'。 –
感谢您按照预期工作,Xcode只会自动完成standardOutput:o –