私がやりたいのは、改行に関係なく、データが到着したときにそれを処理することです。
read -n $n
stdin でパイプを使用する場合、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
、これまでに受信した入力を処理するにはどうすればよいでしょうか。