Назад | Перейти на главную страницу

Записать в stdin запущенного процесса с помощью канала

Я в такой же ситуации, как и в этом Почта Но я не могу получить предоставленное там решение для работы в моей ситуации, поскольку ответ, похоже, относится только к этому вопросу.

В частности, я не мог понять, в чем была цель

cat my.fifo | nc remotehost.tld 10000

В моем случае у меня запущен процесс и ожидает ввода. как я могу отправить ввод в этот процесс, используя именованные каналы?

я пробовал echo 'h' > /proc/PID/fd/0 он просто отображает "h" в окне процесса.

Просто игнорируйте строки, содержащие nc, OP в этом вопросе хочет использовать его для передачи данных по сети через nc.

Это оставляет вам:

mkfifo yourfifo
cat > yourfifo &
mypid=$!
yourprogram < yourfifo

Теперь вы можете отправлять данные в свою программу с помощью

echo "Hello World" > yourfifo

Если вы закончили, завершите свою программу, введите команду kill $mypid чтобы избавиться от фиктивного процесса, чтобы сохранить FIFO открытым и rm yourfifo чтобы избавиться от именованного канала.