Aperçu
`mkfifo` crée un tube nommé, un fichier spécial, dans le système de fichiers. Ce tube sert de canal de communication permettant à deux processus indépendants ou plus d'envoyer et de recevoir des données. Lorsqu'un processus écrit dans le tube, un autre processus peut lire à partir de celui-ci, les données étant traitées selon le principe du premier entré, premier sorti (FIFO).
Caractéristiques principales
- Existe dans le système de fichiers et est accessible par chemin
- Fournit un canal de communication entre processus indépendants
- Les données sont traitées selon le principe du premier entré, premier sorti (FIFO)
- Utile pour construire des pipelines complexes dans les scripts shell
Options principales
La commande `mkfifo` est principalement utilisée avec un chemin de fichier comme argument et prend en charge quelques options de base.
Options de création
Commande générée :
Essayez de combiner les commandes.
Description:
`mkfifo` Exécute la commande.
Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.
Exemples d'utilisation
Montre comment créer un tube nommé à l'aide de `mkfifo` et comment l'utiliser pour la communication inter-processus.
Création d'un tube nommé de base
mkfifo my_pipe
Crée un tube nommé `my_pipe` dans le répertoire courant.
Création d'un tube avec des permissions spécifiques
mkfifo -m 600 my_private_pipe
Crée `my_private_pipe` où seul le propriétaire peut lire et écrire.
Transfert de données à l'aide d'un tube nommé
mkfifo data_channel
echo "Hello from Terminal 1!" > data_channel &
cat < data_channel
Exemple où des données sont écrites dans un terminal et lues dans un autre. **Terminal 1 :** `mkfifo data_channel` `echo "Hello from Terminal 1!" > data_channel` **Terminal 2 :** `cat < data_channel`
Utilisation de tubes avec des processus en arrière-plan
mkfifo background_output
(ls -l; sleep 2; echo "Done listing") > background_output &
cat < background_output
Transfère la sortie d'un processus s'exécutant en arrière-plan vers une autre commande via un tube.
Conseils et précautions
Points à considérer et conseils d'utilisation lors de l'utilisation de tubes nommés.
Suppression du tube
Les tubes nommés peuvent être supprimés avec la commande rm, comme les fichiers ordinaires. Il est conseillé de nettoyer les tubes inutilisés après leur utilisation.
rm my_pipe
Comportement de blocage
Les tubes nommés fonctionnent par défaut en mode bloquant. Cela signifie qu'une tentative d'écriture (ou de lecture) d'un côté attendra que l'autre côté commence à lire (ou à écrire). Pour éviter ce comportement, exécutez l'opération en arrière-plan, par exemple avec cat < my_pipe &, ou ouvrez le tube en mode non bloquant à l'aide du drapeau O_NONBLOCK.
Utilisation du système de fichiers temporaire
Pour les tubes à usage temporaire, il est recommandé d'utiliser le répertoire /tmp ou la commande mktemp pour créer des tubes avec des noms uniques. Cela permet d'éviter les conflits de noms et garantit que les tubes peuvent être automatiquement nettoyés lors du redémarrage du système.