[FIX] STDOUT output not visible in Xcode console

This commit is contained in:
Fabian Thies
2023-02-19 11:40:26 +01:00
parent 24146cef90
commit 00dc9b36af

View File

@@ -17,6 +17,7 @@ class OutputCapturer {
private var inputPipe = Pipe() private var inputPipe = Pipe()
private var errorPipe = Pipe() private var errorPipe = Pipe()
private var outputPipe = Pipe()
private init() { private init() {
// Setup pipe file handlers // Setup pipe file handlers
@@ -27,6 +28,9 @@ class OutputCapturer {
self?.handle(data: fileHandle.availableData, isError: true) self?.handle(data: fileHandle.availableData, isError: true)
} }
// Keep STDOUT
dup2(STDOUT_FILENO, self.outputPipe.fileHandleForWriting.fileDescriptor)
// Intercept STDOUT and STDERR // Intercept STDOUT and STDERR
dup2(self.inputPipe.fileHandleForWriting.fileDescriptor, STDOUT_FILENO) dup2(self.inputPipe.fileHandleForWriting.fileDescriptor, STDOUT_FILENO)
dup2(self.errorPipe.fileHandleForWriting.fileDescriptor, STDERR_FILENO) dup2(self.errorPipe.fileHandleForWriting.fileDescriptor, STDERR_FILENO)
@@ -38,6 +42,9 @@ class OutputCapturer {
} }
private func handle(data: Data, isError: Bool = false) { private func handle(data: Data, isError: Bool = false) {
// Write output to STDOUT
self.outputPipe.fileHandleForWriting.write(data)
guard let string = String(data: data, encoding: .utf8) else { guard let string = String(data: data, encoding: .utf8) else {
return return
} }