2010-04-15 7 views
3

Dans l'environnement de programmation Unix par K & P, il est écrit que
"Les programmes dans un pipeline exécutent en fait en même temps, pas l'un après l'autre.
Cela signifie que les programmes dans un pipeline peut être interactif; "tuyauterie sous UNIX doute

Comment les programmes peuvent-ils fonctionner en même temps?
Par exemple: $ qui | grep mary | wc -l
Comment grep mary sera exécuté jusqu'à qui est exécuté ou comment wc -l sera exécuté jusqu'à ce que connaisse les résultats des programmes précédents?

Répondre

7
  • Les trois programmes vont démarrer. grep et wc attente d'une entrée via stdin
  • who va afficher une ligne de données, qui grep recevra alors
  • Si la ligne correspond, grep écrire à stdout, qui wc ensuite lire et à compter
  • Dans Entre-temps, who peut aussi avoir été écrit sur d'autres données pour grep etc

Chaque programme a besoin des résultats de la précédente, mais il n'a pas besoin tous des résultats avant de pouvoir commencer de travail, ce qui explique pourquoi pipelining est réalisable.