GNU/Linux >> Znalost Linux >  >> Linux

Jak vytvořit obousměrné potrubí mezi dvěma programy?

Každý ví, jak vytvořit jednosměrné potrubí mezi dvěma programy (bind stdout z prvního a stdin druhého):first | second .

Ale jak udělat obousměrnou rouru, tedy cross-bind stdin a stdout ze dvou programů? Existuje snadný způsob, jak to udělat v prostředí shell?

Přijatá odpověď:

Pokud jsou kanály ve vašem systému obousměrné (jako jsou na Solaris 11 a alespoň na některých BSD, ale ne na Linuxu):

cmd1 <&1 | cmd2 >&0

Dejte si však pozor na zablokování.

Všimněte si také, že některé verze ksh93 na některých systémech implementují roury (| ) pomocí páru zásuvek . páry zásuvek jsou obousměrné, ale ksh93 výslovně vypíná zpětný směr, takže výše uvedený příkaz by s těmito ksh93 nefungoval ani na systémech, kde potrubí (jak je vytvořeno pomocí pipe(2) systémové volání) jsou obousměrné.


Linux
  1. Jak vybrat první výskyt mezi dvěma vzory, které je obsahují?

  2. Jak extrahovat protokoly mezi dvěma časovými razítky?

  3. Jak Rsync souborů mezi dvěma dálkovými ovladači?

  1. Jak vytvořit VPN

  2. Jak udělat soubor řídký?

  3. Jak zjistím rozdíl mezi dvěma daty pod bash

  1. Jak přenášet soubory mezi dvěma počítači pomocí příkazů nc a pv

  2. Nechat Tail -f vyjet na prasklé potrubí?

  3. Jak zablokovat veškerý provoz mezi dvěma rozhraními?