pipex
Réimplémentation du pipeline du shell en C : fork, pipe, dup2 et gestion des processus.
Reproduire un pipeline de shell depuis du C.
Ce que fait le programme
./pipex file1 cmd1 cmd2 file2 se comporte comme < file1 cmd1 | cmd2 > file2 : le programme ouvre les deux fichiers, envoie la sortie de la première commande dans l’entrée de la seconde, et exécute chacune dans son propre processus.
Comment il fonctionne
pipe() fournit la paire de descripteurs, fork() les processus, dup2() place les extrémités du tube et les fichiers là où les commandes les attendent — sur les descripteurs 0 et 1 — et execve() remplace chaque fils par la commande, cherchée dans le PATH.
Ce que j’en ai tiré
Ce que fait réellement le shell quand on tape un |. Les redirections cessent d’être magiques une fois qu’on a déplacé les descripteurs soi-même.