Menulis ke stdin dari proses yang berjalan menggunakan pipa

8

Saya berada dalam situasi yang sama seperti pada posting ini . Tapi saya tidak bisa mendapatkan solusi yang disediakan di sana untuk bekerja dalam situasi saya karena jawabannya tampaknya terkait dengan pertanyaan itu saja.

Secara khusus, saya tidak bisa mengerti apa tujuannya

cat my.fifo | nc remotehost.tld 10000

Dalam kasus saya, saya memiliki proses yang berjalan dan menunggu input. bagaimana saya bisa mengirim input ke proses itu menggunakan pipa bernama?

Saya sudah mencobanya echo 'h' > /proc/PID/fd/0hanya menampilkan 'h' di jendela proses '.

aditya
sumber

Jawaban:

13

Abaikan saja baris yang berisi nc, OP dalam pertanyaan ini ingin menggunakannya untuk mentransfer data melalui jaringan nc.

Itu membuat Anda dengan:

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

Sekarang Anda dapat mengirim data ke program Anda dengan

echo "Hello World" > yourfifo

Jika Anda selesai, hentikan program Anda, keluarkan perintah kill $mypiduntuk menyingkirkan proses tiruan agar FIFO tetap terbuka dan rm yourfifountuk menyingkirkan pipa yang disebutkan.

Sven
sumber
2
apa yang sedang cat > yourfifo &dilakukan
Alexander Mills