Некоторое время я возился с тем, чтобы заставить это работать, поэтому я подозреваю, что какое-то фундаментальное недоразумение о том, как работают каналы, является основной причиной моих проблем.
Моя цель - инициировать TCP-соединение с некоторым удаленным хостом через netcat
и иметь два именованных канала в файловой системе: один, из которого процессы могут читать, чтобы получить входящие данные, и другой, который процессы могут записывать в этот файл, который служит в качестве исходящих данных. В настоящее время я использую следующую конструкцию:
mkfifo in
mkfifo out
cat out | netcat foo.bar.org 4000 > in &
Отсюда я хотел бы разрешить другим процессам читать и записывать в / из этого открытого TCP-соединения. Должно ли это «просто работать», или есть причина, почему такая конструкция не может работать?
Что , кажется , произойдут в настоящее время является то , что я могу читать out
без проблем, но когда я пишу in
я получаю выход упоминая сломанную трубу и все последующие связи появляются мертвыми. Мысли?
(Связанный: я первоначально использовал:
netcat foo.bar.org 4000 < out > in &
но нашел его, чтобы заблокировать ожидание ввода. Мне тоже интересно об этом, но, вероятно, это лучше рассмотреть в отдельном вопросе.)
write(stdout): Broken pipe
после (или вскоре после) записи вout
трубу.