gpt4 book ai didi

swift - 当命令无法执行时 NSTask 得到通知 "command not found"

转载 作者:行者123 更新时间:2023-11-28 12:21:51 27 4
gpt4 key购买 nike

我正在尝试从我的应用程序运行终端命令/脚本,一切正常,但是当命令错误且无法执行时,我得到如下信息:

enter image description here

但是这个“/bin/bash: line...”字符串不在我从任务中获得的输出字符串中,有没有什么方法可以在我的应用程序中获取这些错误或以任何方式在它们发生时得到通知?

我的代码

    // 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)")
}
}

最佳答案

你要找的东西是standardError NSTaskProcess 类的属性。将管道分配给此属性,就像您对 standardOutput 所做的那样。

关于swift - 当命令无法执行时 NSTask 得到通知 "command not found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44552378/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com