fifo - Fichier spécial de file FIFO, tube nommé
Un fichier spécial de file FIFO (First In, First Out) est
l'équivalent d'un tube (pipeline), sauf qu'il est accessible en tant
que partie du système de fichiers. Il peut être ouvert par
plusieurs processus, tant en lecture qu'en écriture. Lorsque des
processus échangent des données par le biais d'une file FIFO, le
noyau transfère les informations de manière interne, sans passer
par une écriture réelle dans le système de fichiers.
Ainsi, le fichier spécial de file FIFO n'a pas de véritable
contenu ; c'est essentiellement un point de référence
pour que les processus puissent accéder au tube en employant un nom
dans le système de fichiers.
Le noyau maintient exactement un tube pour chaque fichier spécial de file
FIFO ouvert par au moins un processus. La file FIFO doit être ouverte
des deux côtés (lecture et écriture) avant que des
données puissent y transiter. Normalement, l'ouverture d'une file FIFO
est bloquante jusqu'à ce que l'autre côté soit aussi
ouvert.
Un processus peut ouvrir une FIFO en mode non bloquant. Dans ce cas, l'ouverture
en lecture seule réussira même si personne n'a encore ouvert le
côté écriture. L'ouverture en écriture seule
échouera avec l'erreur
ENXIO (aucun périphérique
ou adresse) si l'autre côté n'a pas encore été
ouvert.
Sous Linux, l'ouverture d'une file FIFO en lecture et écriture
réussira aussi bien en mode bloquant que non bloquant. POSIX ne
précise pas ce comportement. Cela peut servir à ouvrir une FIFO
en écriture, même si aucun lecteur n'est prêt. Un
processus qui utilise les deux côtés d'une FIFO pour communiquer
avec lui-même doit être très prudent pour éviter
les situations de blocage.
Pour des détails sur la sémantique des E/S sur le FIFO, consultez
pipe(7).
Quand un processus essaye d'écrire dans une FIFO qui n'a pas
été ouverte en lecture de l'autre côté, le
processus reçoit un signal
SIGPIPE.
FIFO special files can be created by
mkfifo(3), and are indicated by
ls -l with the file type 'p'.
mkfifo(1),
open(2),
pipe(2),
sigaction(2),
signal(2),
socketpair(2),
mkfifo(3),
pipe(7)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]>,
Cédric Boutillier <
[email protected]>,
Frédéric Hantrais <
[email protected]> et Jean-Pierre
Giraud <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]