O que quero fazer é processar os dados quando eles chegarem, independentemente de quebras de linha.
- Ao usar
read -n $n
um pipe no stdin, o Bash faz uma syscallread (0, buf, 1)
por byte, o que é muito lento se a quantidade de dados a serem processados não for pequena (digamos, 1 MB ou mais). - Ao usar
read -N $n
o Bash, faço syscalls repetidosread (0, buf, <RestOf$n>)
até$n
ser alcançado, então não consigo começar a processar o que foi recebido até agora. - Ao usar,
read -N $n -t 0.1
fico vazio,$REPLY
mesmo que alguns dados tenham sido lidos. Isso significa: os dados são perdidos. Isso é um bug ou um recurso do Bash?
Então, como posso fazer exatamente um read
syscall com um count
argumento arbitrário bash
e processar a entrada recebida até agora?