Как сделать ровно один системный вызов read в Bash?

Как сделать ровно один системный вызов read в Bash?

Я хочу обрабатывать данные по мере их поступления, независимо от переносов строк.

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

Итак, как мне сделать ровно один readсистемный вызов с произвольным countаргументом, bashа затем обработать полученные на данный момент входные данные?

Связанный контент