Bash で正確に 1 つの読み取りシステムコールを作成するにはどうすればよいですか?

Bash で正確に 1 つの読み取りシステムコールを作成するにはどうすればよいですか?

私がやりたいのは、改行に関係なく、データが到着したときにそれを処理することです。

  • read -n $nstdin でパイプを使用する場合、Bash はread (0, buf, 1)1 バイトごとに 1 つのシステムコールを実行しますが、処理するデータの量が少なくない場合 (たとえば 1 MB 以上) は速度が遅くなりすぎます。
  • Bashを使用すると、到達するまでread -N $nシステムコールが繰り返し実行されるため、これまでに受信した内容の処理を開始できません。read (0, buf, <RestOf$n>)$n
  • 使用時に、一部のデータが読み取られていても、read -N $n -t 0.1空になります$REPLY。つまり、データが失われます。これはバグですか、それとも Bash の機能ですか?

readでは、任意のcount引数を指定して1 つのシステムコールを正確に実行しbash、これまでに受信した入力を処理するにはどうすればよいでしょうか。

関連情報