Przez jakiś czas majstrowałem przy tym, żeby to zadziałało, więc podejrzewam jakieś podstawowe nieporozumienie na temat działania rur, które jest główną przyczyną moich problemów.
Moim celem jest zainicjowanie połączenia TCP z jakimś zdalnym hostem za pośrednictwem netcat
i posiadanie dwóch nazwanych potoków w systemie plików: jeden, z którego procesy mogą czytać, aby uzyskać przychodzące dane, a drugi, który procesy mogą zapisywać, służą jako dane wychodzące. Obecnie używam następującej konstrukcji:
mkfifo in
mkfifo out
cat out | netcat foo.bar.org 4000 > in &
Odtąd chciałbym zezwolić innym procesom na odczyt i zapis do / z tego otwartego połączenia TCP. Czy to „po prostu działa”, czy może jest powód, dla którego taki konstrukt nie może działać?
Co wydaje się stać w chwili obecnej jest to, że mogę odczytać z out
bez problemu, ale gdy piszę aby in
uzyskać wyjście wspomnieć o podziale rury i wszystkie kolejne pojawi komunikacyjnych być martwy. Myśli?
(Powiązane: pierwotnie użyłem:
netcat foo.bar.org 4000 < out > in &
ale stwierdził, że blokuje oczekiwanie na dane wejściowe. Ciekawi mnie to również, ale prawdopodobnie lepiej jest to rozwiązać w osobnym pytaniu).
write(stdout): Broken pipe
po (lub wkrótce po) pisaniu doout
potoku.