2012-07-07 8 views
5

È possibile creare un ciclo utilizzando i tubi Linux? Per esempio.Tubazioni e loop Linux

cmd1 | cmd2 | cmd3 | 'Torna a stdin cmd1'

In altre parole, mi piacerebbe stdout a cmd3 da collegare di nuovo a stdin di cmd1.

+0

essere consapevoli del fatto che questo tipo di loop possono causare situazioni di stallo. Se un comando nel ciclo interrompe la lettura per troppo tempo mentre sta ancora scrivendo, alla fine tutti i tubi diventano pieni e bloccati. Anche il comando lento originale non può più scrivere. – jilles

+0

Lo userò come "message passing ring" (in sostituzione di un sistema basato su 0MQ): non mi aspetto che si verifichi questo tipo di deadlock. – jldupont

risposta

4

si potrebbe utilizzare una named pipe/FIFO:

mkfifo cmd3-to-cmd1 
cmd1 < cmd3-to-cmd1 | cmd2 | cmd3 >> cmd3-to-cmd1