Avatar
Swiftコンパイラボットを作成する過程で、Processで起動した子プロセスの出力をキャプチャする際にはDispatchGroupで待つと良いという知見を得た。 https://github.com/norio-nomura/SwiftCompilerDiscordappBot/blob/master/Sources/SwiftCompilerDiscordappBot/execute().swift#L27-L31
SwiftCompilerDiscordappBot - Swift Compiler Discordapp Bot
11:06 AM
パイプが64KB以上バッファしてくれないので、親側でパイプから逐次読み出さないでいると、子プロセスからの出力が64KBを越えた時点でパイプへの書き込み待ちになり、子プロセスが終了しなくなる。
11:07 AM
なので、プロセス終了待ちと標準出力受け取りと標準エラー受け取りを全部並列で実行する必要がある。