สองหน้าต่างผู้ใช้เดียวกันพร้อมกับ bash พร้อมต์ ในประเภท window-1:
$ mkfifo f; exec <f
ดังนั้นทุบตีอยู่ในขณะนี้พยายามอ่านจากไฟล์อธิบาย 0 f
ซึ่งถูกแมปไปไปป์ที่มีชื่อ ในประเภท window-2:
$ echo ls > f
ตอนนี้ window-1 จะพิมพ์ ls แล้วเชลล์ก็จะตาย ทำไม?
ทดลองถัดไป: เปิดหน้าต่าง-1 exec <f
อีกครั้งกับ ในประเภท window-2:
$ exec 3>f
$ echo ls >&3
หลังจากบรรทัดแรกด้านบน window-1 จะปลุกและพิมพ์พรอมต์ ทำไม? หลังจากบรรทัดที่สองข้างต้น window-1 จะพิมพ์ls
เอาต์พุตและเชลล์ยังมีชีวิตอยู่ ทำไม? อันที่จริงตอนนี้ใน window-2 echo ls > f
ไม่ได้ปิดเชลล์ window-1
คำตอบต้องเกี่ยวกับการมีอยู่ของ file descriptor 3 จาก window-2 ที่อ้างอิงไปป์ที่มีชื่อ!
exec 3>f
เชลล์ถูกเรียกใช้ครั้งแรกแล้วจะให้พรอมต์ (จุดไมเนอร์คุณไม่ได้หมายความว่า "ในการเขียนโหมด" ในความคิดเห็นของคุณ?)
exec <f
,bash
ไม่ได้พยายามที่จะอ่านจากf
มันเป็นครั้งแรกที่พยายามที่จะเปิดมันopen()
จะไม่กลับมาจนกว่าจะมีกระบวนการบางอย่างทำอีกเปิดในโหมดการเขียนไปยังท่อ (ตรงจุดนี้ท่อจะถูก instantiated และเปลือกจะอ่านข้อมูลจากมัน)