accueil > Gestion des fichiers et répertoires > mkfifo

mkfifo : Créer un tube nommé

`mkfifo` est une commande qui crée un tube nommé (FIFO, First-In, First-Out). Un tube nommé est un fichier spécial dans le système de fichiers qui sert de canal de communication pour échanger des données entre des processus distincts. Contrairement aux tubes anonymes, il est accessible via un chemin de fichier, ce qui permet aux processus indépendants de communiquer facilement.

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.


Commandes de la même catégorie