ฉันเล่นซอให้เรื่องนี้ทำงานได้ซักพักแล้วดังนั้นฉันจึงสงสัยว่าความเข้าใจผิดพื้นฐานบางอย่างเกี่ยวกับการทำงานของท่อเป็นสาเหตุของปัญหาของฉัน
เป้าหมายของฉันคือการเริ่มต้นการเชื่อมต่อ 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
ไปป์