Я хочу обрабатывать данные по мере их поступления, независимо от переносов строк.
- При использовании
read -n $n
с каналом на stdin Bash выполняет один системный вызовread (0, buf, 1)
на байт, что слишком медленно, если объем обрабатываемых данных не мал (скажем, 1 МБ или более). - При использовании
read -N $n
Bash выполняет повторные системные вызовыread (0, buf, <RestOf$n>)
до тех пор , пока$n
не будет достигнуто значение , поэтому я не могу начать обработку того, что получено на данный момент. - При использовании
read -N $n -t 0.1
получаю пустое,$REPLY
даже если какие-то данные были прочитаны. Это означает: данные потеряны. Это баг или фича Bash?
Итак, как мне сделать ровно один read
системный вызов с произвольным count
аргументом, bash
а затем обработать полученные на данный момент входные данные?