Saya telah mengutak-atik agar ini berfungsi untuk sementara waktu sekarang, jadi saya curiga ada semacam kesalahpahaman mendasar tentang bagaimana pipa bekerja adalah akar penyebab masalah saya.
Tujuan saya adalah untuk memulai koneksi TCP ke beberapa host jarak jauh melalui netcat
dan memiliki dua pipa bernama pada sistem file: satu yang proses dapat membaca dari untuk mendapatkan data yang masuk, dan yang lain proses yang dapat menulis ke yang berfungsi sebagai data keluar. Saat ini saya menggunakan konstruksi berikut:
mkfifo in
mkfifo out
cat out | netcat foo.bar.org 4000 > in &
Dari sini, saya ingin mengizinkan proses lain untuk membaca dan menulis ke / dari koneksi TCP terbuka ini. Haruskah ini "hanya bekerja", atau adakah alasan mengapa konstruk seperti ini tidak berhasil?
Apa yang tampaknya terjadi saat ini adalah bahwa saya dapat membaca dari out
tanpa masalah, tetapi ketika saya menulis ke in
saya mendapatkan output menyebutkan pipa yang rusak dan semua komunikasi berikutnya tampaknya mati. Pikiran?
(Terkait: Saya awalnya menggunakan:
netcat foo.bar.org 4000 < out > in &
tetapi menemukannya untuk memblokir menunggu input. Saya ingin tahu tentang ini juga, tetapi mungkin lebih baik dibahas dalam pertanyaan terpisah.)
write(stdout): Broken pipe
setelah (atau tidak lama) menulis keout
pipa.