De APUE
Les FIFO peuvent être utilisés pour dupliquer un flux de sortie dans une série de commandes shell . Cela empêche d'écrire les données dans un fichier disque intermédiaire (similaire à l'utilisation de tubes pour éviter les fichiers disque intermédiaires).
Cependant, alors que les tubes ne peuvent être utilisés que pour des connexions linéaires entre processus, une FIFO a un nom et peut donc être utilisée pour des connexions non linéaires .
Considérons une procédure qui doit traiter un flux d'entrée filtré deux fois.
mkfifo fifo1 prog3 < fifo1 & prog1 < infile | tee fifo1 | prog2
Nous créons la FIFO puis commençons prog3 en arrière-plan, en lisant à partir de la FIFO. Nous commençons ensuite prog1 et utilisons tee pour envoyer son entrée à la fois au FIFO et au prog2.
Comment une FIFO "duplique-t-elle un flux de sortie dans une série de commandes shell"? N'est-ce pas fait par
tee
au lieu d'un FIFO?Dans l'exemple,
mkfifo fifo1
crée un fichier dans le répertoire en cours etfifo1
semble remplaçable par un fichier normal. Alors, quel est l'intérêt d'une FIFO "d'empêcher l'écriture des données dans un fichier disque intermédiaire"?Que signifient "connexions linéaires" et "connexions non linéaires" entre processus? Qu'est-ce que cela signifie qu'un FIFO peut être utilisé pour des connexions non linéaires, alors qu'un tuyau ne peut être utilisé que pour des connexions linéaires entre processus?
Merci.
tee
une FIFO, par exemple, en utilisanttee
un fichier régulier temporaire, nous pouvons également réaliser la même connexion non linéaire.