Запишите в stdin запущенного процесса, используя pipe

8

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

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

cat my.fifo | nc remotehost.tld 10000

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

Я пытался echo 'h' > /proc/PID/fd/0это просто отображает «H» в окне процесса.

адитйа
источник

Ответы:

13

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

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

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

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

echo "Hello World" > yourfifo

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

Свен
источник
2
что cat > yourfifo &делает?
Александр Миллс