Il mio obiettivo è quello di creare un semplice server echo utilizzando nce un singolo fifo. Non sto cercando il modo migliore per farlo, sto solo cercando di capire la semantica dei seguenti comandi (quando si verifica il fork, perché, cosa cambia, perché i comandi si comportano diversamente ...).
Sto utilizzando Bash, quindi non sono sicuro se tutti i comandi funzionerà con un POSIX sho zsh, ksh...
Ecco i quattro comandi che sto citando nel titolo (supponendo che l'ho già fatto mkfifo fifo):
cat fifo | nc -l localhost 8888 > fifo
exec 3<> fifo && nc -l localhost 8888 <&3 >&3 && exec 3>&-
nc -l localhost 8888 <(cat fifo) > fifo
nc -l localhost 8888 < fifo > fifo
Ora mi aspetto che i 4 comandi facciano la stessa cosa, perlomeno gli ultimi due facciano la stessa cosa.
- Il primo comando si comporta come previsto, un semplice server echo che si spegne quando il client chiude la connessione.
- Si comporta come 1.
- Posso connettermi al server, inviare dati, ma non ricevo mai nulla indietro. Quando chiudo la connessione client, il server si spegne.
- Impossibile connettersi al server, il server è in ascolto per sempre.