GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer un tuyau bidirectionnel entre deux programmes ?

Tout le monde sait comment créer un tube unidirectionnel entre deux programmes (bind stdout du premier et stdin du second) :first | second .

Mais comment créer un tube bidirectionnel, c'est-à-dire une liaison croisée stdin et stdout de deux programmes? Existe-t-il un moyen simple de le faire dans un shell ?

Réponse acceptée :

Si les canaux de votre système sont bidirectionnels (comme ils le sont sur Solaris 11 et certains BSD au moins, mais pas sur Linux) :

cmd1 <&1 | cmd2 >&0

Méfiez-vous cependant des blocages.

Notez également que certaines versions de ksh93 sur certains systèmes implémentent des canaux (| ) en utilisant une paire de sockets . les paires de sockets sont bidirectionnelles, mais ksh93 ferme explicitement la direction inverse, de sorte que la commande ci-dessus ne fonctionnerait pas avec ces ksh93, même sur les systèmes où les canaux (tels que créés par le pipe(2) appel système) sont bidirectionnels.


Linux
  1. Comment transférer des fichiers entre deux ordinateurs à l'aide des commandes nc et pv

  2. Comment synchroniser des fichiers entre deux télécommandes ?

  3. Comment diriger les commandes vers n'importe quel terminal ?

  4. Comment puis-je obtenir la différence entre deux dates sous bash

  5. Comment bloquer tout le trafic entre deux interfaces ?

Comment trouver la différence entre deux répertoires à l'aide des outils Diff et Meld

Comment rendre un fichier exécutable sous Linux

Comment synchroniser automatiquement des fichiers entre deux serveurs Linux

Comment connecter et partager des données entre deux systèmes Linux

Comment faire pour qu'Ubuntu supporte le défilement du pavé tactile?

Comment faire d'un utilisateur un administrateur dans Debian 11