swift - 进程(NSTask)fileHandleForReading readabilityHandler 闭包未在 Linux 上调用

标签 swift linux ubuntu

在 macOS 中编译以下代码时,它会运行并提供输出。

import Foundation

let runloop = RunLoop.current

let process = Process()
process.launchPath = "/bin/echo"
process.arguments = ["hello world"]

let output = Pipe()
process.standardOutput = output

output.fileHandleForReading.readabilityHandler = { fileHandle in
    let data = fileHandle.availableData
    print("received data: \(data.count)")
    print(String(data: data, encoding: .utf8) ?? "")
}

print("starting")
process.launch()

while runloop.run(mode: .default, before: Date(timeIntervalSinceNow: 2)) { }

输出:
received data: 12
hello world\n

但是当我在 Ubuntu Swift docker 镜像(Swift 版本 5.0.1)中编译并运行它时,readabilityHandler闭包根本不会被调用。

最佳答案

这似乎已在 swift:latest 中修复。 Docker 镜像(撰写本文时为 5.1.4)。看起来像 readabilityHandler在 Linux 和 merged 中实现在 Swift 5.1 的准备阶段。

关于swift - 进程(NSTask)fileHandleForReading readabilityHandler 闭包未在 Linux 上调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55991688/

相关文章:

linux - 重启后自动直接运行一个shell命令并保持运行

ubuntu - 如何将环境变量传递给 systemd 启动的服务

python - 找不到 pygraphviz

ios - 错误: value of type 'Optional<NSMutableArray>' has no subscripts Array[0] in Swift iOS

ios - 在 Swift 4 中从另一个 View Controller 获取数据(不是通过向前或向后传递数据)

linux - 计算日志文件中单词 [error] 和 [notice] 的出现次数

php - Ubuntu 20 终端 PHP 脚本输出

ios - 使用 swift 从 JSON 检索数据时出现问题

ios - captureOutput() 函数从未被调用 swift4

c++ - 错误的 libserial 接收数据序列