При компиляции следующего кода в 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)) { }
output:
received data: 12
hello world\n
Но когда я компилирую и запускаю это в образе док-станции Ubuntu Swift (Swift версии 5.0.1), закрытие readabilityHandler
вообще не вызывается.