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.