GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum bekomme ich cat:Schreibfehler:Rohrbruch selten und nicht immer

Der Grund ist, dass die Pipe durch grep geschlossen wird wenn noch einige Daten aus cat gelesen werden müssen . Das Signal SIGPIPE wird von einer Katze gefangen und verlässt sie.

Was normalerweise in einer Pipeline passiert, ist, dass die Shell cat ausführt in einem Vorgang und grep in einem anderen. Die Standardausgabe von cat ist mit dem schreibenden Ende der Pipe und stdin von grep verbunden zum Leseende. Was passiert ist, war grep traf eine Mustersuche, die nicht existierte, und wurde sofort beendet, was dazu führte, dass das gelesene Ende der Pipe geschlossen wurde, was cat ist mag nicht, da noch einige Daten in die Pipe geschrieben werden müssen. Da die Schreibaktionen an einem anderen Ende stattfinden, das geschlossen wurde, SIGPIPE wird von cat abgefangen auf dem es sofort beendet wird.

In solch einem trivialen Fall könnten Sie die Pipeline-Nutzung vollständig entfernen und sie als grep "pattern" file.txt ausführen wenn der Inhalt der Datei über die stdin von grep verfügbar gemacht wird auf dem es lesen konnte.


Linux
  1. Warum erhalten Sie cp:Weglassen des Verzeichnisfehlers in Linux und wie Sie ihn lösen können

  2. Cut / Grep und Df -h?

  3. Grep und Schwanz -f?

  4. Warum wird der Dateideskriptor nur einmal geöffnet und gelesen?

  5. 7 Beispiele für Linux-Operatoren Grep OR, Grep AND, Grep NOT

Warum sehen Sie den Fehler:Snap „xyz“ nicht gefunden?

Warum ist es Rm -rf und nicht Rmdir -rf?

Warum schlägt Rsync mit Broken Pipe (32), Fehler in Socket Io (Code 10) bei Io.c(820) fehl??

Beheben des Fehlers „Broken Pipe“ mit SSH-Verbindung

Warum wird unter Linux der Fehler Mongod tot, aber Subsys gesperrt und nicht genügend freier Speicherplatz für Journaldateien angezeigt?

Warum gibt chmod +w anderen(o) keine Schreibrechte