一般的に、いいえ。この評価の理由の 1 つは、端末ではなくファイルからの標準 I/O 読み取りがデータのブロックを読み取るためです。一度に BUFSIZ バイトです。ここで、BUFSIZ は通常、512 などの 2 の累乗以上です。データがファイル内にある場合、1 つのプロセスが表示されているファイル全体を読み取ります。他のプロセスは、同じ開いているファイルの説明を共有している場合は何も表示しません (ファイル記述子に似ていますが、複数のファイル記述子が同じ開いているファイルの説明を共有できます。異なるプロセスにある可能性があります)、またはそれらが同じ開いているファイルの説明を共有していない場合は、同じファイル全体を読み取ります。
したがって、3 つのプロセスに情報を分割する必要があることを認識しているファイルを読み取るプロセスが必要です。また、3 つのプロセスに接続する方法を認識している必要があります。ディストリビューター プログラムが 3 つのプロセスを実行し、それらの個別のパイプ入力に書き込む可能性があります。または、ディストリビューターが 3 つのソケットに接続し、異なるソケットに書き込みを行っている可能性があります。
あなたの例では、マーカーで区切られた 37 のセクションがある場合に何が起こるかを示したり説明したりしていません。
tpipe
Unixコマンドに似た自作プログラムtee
がありますが、標準入力(のすべて)のコピーを各プロセスに書き込み、デフォルトで標準出力にも書き込みます。これは、必要なものの適切な基礎になる可能性があります (少なくとも、プロセス管理の部分をカバーしています)。コピーが必要な場合は、私に連絡してください - 私のプロフィールを見てください。
Bash を使用している場合は、正規tee
のプロセス置換を使用してシミュレートできますtpipe
。方法の図については、この記事を参照してください。
同じ情報の別のバージョンについては、 SF 96245も参照してください。さらに、 (基本的な考え方は同じですが、さまざまな点で実装がわずかに異なります)pee
と呼ばれるプログラムへのリンクも参照してください。tpipe