GNU/Linux >> Linux Esercitazione >  >> Linux

Come realizzare un tubo bidirezionale tra due programmi?

Tutti sanno come creare pipe unidirezionali tra due programmi (bind stdout del primo e stdin del secondo):first | second .

Ma come creare pipe bidirezionali, ovvero cross-bind stdin e stdout di due programmi? C'è un modo semplice per farlo in una shell?

Risposta accettata:

Se le pipe sul tuo sistema sono bidirezionali (come lo sono almeno su Solaris 11 e alcuni BSD, ma non su Linux):

cmd1 <&1 | cmd2 >&0

Attenzione agli stalli però.

Nota anche che alcune versioni di ksh93 su alcuni sistemi implementano le pipe (| ) utilizzando una coppia di socket . le coppie di socket sono bidirezionali, ma ksh93 interrompe esplicitamente la direzione inversa, quindi il comando sopra non funzionerebbe con quei ksh93 anche su sistemi in cui pipe (come creato da pipe(2) chiamata di sistema) sono bidirezionali.


Linux
  1. Come selezionare la prima occorrenza tra due modelli che li includono?

  2. Come estrarre i registri tra due timestamp?

  3. Fai uscire Tail -f su un tubo rotto?

  4. Linux:come eliminare i file creati tra due volte?

  5. Come rendere il file sparse?

Come trovare la differenza tra due directory usando gli strumenti Diff e Meld

Come rendere eseguibile un file in Linux

Come sincronizzare automaticamente i file tra due server Linux

Come connettere e condividere dati tra due sistemi Linux

Come fare in modo che Ubuntu supporti lo scorrimento del touchpad?

Come rendere un utente un amministratore in Debian 11