はじめに あるプログラムから別のプログラムを実行し、結果を受け取りながら処理を進めたい場面が時折生じます。 しかし、パイプの挙動への注意を怠ると思わぬ問題を引き起こす可能性があります。 実行環境 本記事は、以下の環境にて実行しています。 Ruby: 3.0.6 Ubuntu: 20.04 LTS Linux kernel: 5.15.0-71-generic 以降のプログラムは筆者の普段使いの Ruby で記述していますが、本質的には言語によらない問題です。 また、本記事で取り上げているパイプの概念は Unix 系 OS に広く共通するものですが、具体的な説明としては Linux を中心に話を進めます。 サンプルプログラム 子プログラム 実行に一定時間を要し、その途中で標準出力に結果を書き込むプログラムです。 単純化のため、1 秒の固定頻度で標準出力に書き込むだけですが、現実世界では外部へ