GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi est-ce que je reçois un chat :erreur d'écriture :tuyau cassé rarement et pas toujours

La raison est que le tuyau est fermé par grep lorsqu'il a encore des données à lire à partir de cat . Le signal SIGPIPE est attrapé par le chat et il sort.

Ce qui se passe généralement dans un pipeline, c'est que le shell exécute cat en un seul processus et grep en autre. La sortie standard de cat est connecté à la fin d'écriture du tube et du stdin de grep jusqu'à la fin de la lecture. Ce qui s'est passé était grep a frappé une recherche de modèle qui n'existait pas et a quitté immédiatement provoquant la fermeture de l'extrémité de lecture du tube, ce qui cat n'aime pas car il a plus de données à écrire dans le tube. Étant donné que les actions d'écriture se produisent sur une autre extrémité qui a été fermée, SIGPIPE est attrapé par le cat sur lequel il sort immédiatement.

Pour un cas aussi trivial, vous pouvez supprimer complètement l'utilisation du pipeline et l'exécuter en tant que grep "pattern" file.txt lorsque le contenu du fichier est rendu disponible sur le stdin de grep sur lequel il pourrait lire.


Linux
  1. Pourquoi obtenez-vous cp:omission d'une erreur de répertoire sous Linux et comment résoudre

  2. Linux - Pourquoi utilisons-nous Su - Et pas seulement Su ?

  3. Pourquoi Bash ne stocke-t-il pas les commandes commençant par des espaces ?

  4. Couper / Grep Et Df -h ?

  5. Grep et queue -f ?

Pourquoi voyez-vous l'erreur :snap "xyz" introuvable ?

Pourquoi est-ce Rm -rf et non Rmdir -rf ?

Pourquoi Rsync échoue-t-il avec un tuyau cassé (32), erreur dans le socket Io (code 10) à Io.c (820) ??

Correction d'une erreur de tuyau cassé avec une connexion SSH

Pourquoi utilisons-nous su - et pas seulement su ?

Pourquoi ma crontab ne fonctionne-t-elle pas et comment puis-je la dépanner ?