Wie führt man in Bash genau einen Lese-Systemaufruf aus?

Wie führt man in Bash genau einen Lese-Systemaufruf aus?

Ich möchte die Daten beim Eintreffen verarbeiten, unabhängig von Zeilenumbrüchen.

  • Bei Verwendung read -n $nmit einer Pipe auf stdin führt Bash einen Systemaufruf read (0, buf, 1)pro Byte aus, was zu langsam ist, wenn die zu verarbeitende Datenmenge nicht gering ist (z. B. 1 MB oder mehr).
  • Bei der Verwendung von read -N $nBash werden wiederholt Systemaufrufe ausgeführt , read (0, buf, <RestOf$n>)bis $nerreicht ist. Daher kann ich nicht mit der Verarbeitung der bisher empfangenen Daten beginnen.
  • Bei der Verwendung read -N $n -t 0.1erhalte ich ein leeres Ergebnis $REPLY, obwohl einige Daten gelesen wurden. Das bedeutet: Daten sind verloren. Ist das ein Fehler oder eine Funktion von Bash?

Wie kann ich also genau einen readSystemaufruf mit einem beliebigen countArgument durchführen bashund dann die bis dahin erhaltene Eingabe verarbeiten?

verwandte Informationen