当命令无法执行“未找到命令”时,NSTask会收到通知

问题描述 投票:0回答:1

我正在尝试从我的应用程序运行终端命令/脚本,一切正常,但是当命令错误而且无法执行时,我会得到这样的结果:

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)")
        }
    }
swift xcode macos swift4 nstask
1个回答
2
投票

你正在寻找的是standardErrorNSTask类的Process属性。像使用standardOutput一样,将管道分配给此属性。

© www.soinside.com 2019 - 2024. All rights reserved.