0
我想從我的應用程序運行終端命令/腳本,所有工作正常,但是當一個命令是錯誤的,無法執行我得到像這樣的東西這樣的: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 –