← Retour aux projets

pipex

Réimplémentation du pipeline du shell en C : fork, pipe, dup2 et gestion des processus.

Période
29/08/2022
Catégorie
42
Domaine
Systèmes
Note
100
Technologies
  • C
  • Unix
Liens

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.