Como fazer exatamente uma leitura de syscall no Bash?

Como fazer exatamente uma leitura de syscall no Bash?

O que quero fazer é processar os dados quando eles chegarem, independentemente de quebras de linha.

  • Ao usar read -n $num pipe no stdin, o Bash faz uma syscall read (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 $no Bash, faço syscalls repetidos read (0, buf, <RestOf$n>)até $nser alcançado, então não consigo começar a processar o que foi recebido até agora.
  • Ao usar, read -N $n -t 0.1fico vazio, $REPLYmesmo 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 readsyscall com um countargumento arbitrário bashe processar a entrada recebida até agora?

informação relacionada