Leçon 17 : Pipes et FIFO — IPC entre processus
Un pipe est un mécanisme de communication unidirectionnel entre processus — ce que l'un écrit, l'autre le lit. Chaque pipeline shell (cmd1 | cmd2 | cmd3) est construit à partir de pipes anonymes. Un FIFO (named pipe) étend cette idée aux processus non apparentés. Chez NVIDIA, les pipelines d'inféren
Un pipe, c'est comme un tuyau d'eau : un processus verse de l'eau (il écrit), un autre la puise (il lit). L'eau ne coule que dans un sens, et tu ne peux puiser que ce qui a été versé.
- pipe
- Un buffer IPC unidirectionnel maintenu par le noyau — un processus y écrit, un autre y lit. Créé avec pipe(fds), qui renvoie une paire de descripteurs de fichiers : fds[0]=lecture, fds[1]=écriture.
- FIFO (named pipe)
- Un pipe avec un nom dans le système de fichiers. Créé avec mkfifo(path, mode). Permet à des processus non apparentés (sans relation de fork) de communiquer via une entrée du système de fichiers.
- pipe anonyme
- Un pipe sans nom dans le système de fichiers — utilisable uniquement entre un processus parent et ses descendants fork (qui ont hérité des descripteurs de fichiers via fork). C'est le pipe qui alimente les pipelines shell.
- pipe nommé
- Un autre nom pour FIFO — un pipe qui peut être ouvert par son nom comme un fichier normal. Les données passent par le noyau et ne sont pas stockées sur le disque, même s'il existe une entrée dans le répertoire.
- half-close
- Fermer une seule extrémité d'une paire de descripteurs de fichiers d'un pipe. Quand toutes les extrémités d'écriture sont fermées, une lecture depuis l'extrémité de lecture renvoie 0 (EOF). Essentiel pour une communication fork+pipe correcte.