Sono stato un po 'stanco di far funzionare questo per un po' di tempo, quindi sospetto una sorta di fondamentale fraintendimento sul modo in cui i tubi funzionano è la causa principale dei miei problemi.
Il mio obiettivo è quello di avviare una connessione TCP ad un host remoto tramite netcat
e avere due named pipe sul filesystem: una da cui i processi possono leggere per ottenere i dati in entrata, e altri che i processi possono scrivere su quelli che servono come dati in uscita. Attualmente sto usando la seguente costruzione:
mkfifo in
mkfifo out
cat out | netcat foo.bar.org 4000 > in &
Da qui, vorrei consentire ad altri processi di leggere e scrivere su / da questa connessione TCP aperta. Questo dovrebbe "funzionare" o c'è un motivo per cui un costrutto come questo non può funzionare?
Quello che sembra accadere al momento è che posso leggere out
senza problemi, ma quando scrivo in
ottengo un output che menziona una pipe rotta e tutte le comunicazioni successive sembrano essere morte. Pensieri?
(Correlato: originariamente ho usato:
netcat foo.bar.org 4000 < out > in &
ma ho trovato per bloccare in attesa di input. Sono curioso anche di questo, ma probabilmente è meglio affrontarlo in una domanda separata.)
write(stdout): Broken pipe
dopo (o poco dopo) la scrittura sullaout
pipe.