กระบวนการได้รับ SIGPIPE เมื่อพยายามเขียนไปที่ไพพ์ (ตั้งชื่อหรือไม่) หรือซ็อกเก็ตประเภท SOCK_STREAM ที่ไม่มีผู้อ่านเหลืออยู่
เป็นพฤติกรรมที่ต้องการโดยทั่วไป ตัวอย่างทั่วไปคือ:
find . | head -n 1
คุณไม่ต้องการfindให้ทำงานต่อไปเมื่อheadถูกยกเลิก (แล้วปิดไฟล์ descriptor เพียงไฟล์เดียวที่เปิดสำหรับการอ่านบนไพพ์นั้น)
yesคำสั่งมักจะอาศัยสัญญาณว่าจะยุติ
yes | some-command
จะเขียน "y" จนกว่าคำสั่งบางคำสั่งจะถูกยกเลิก
โปรดทราบว่ามันไม่เพียง แต่เมื่อคำสั่งออกเท่านั้น แต่เมื่อผู้อ่านทั้งหมดปิดการอ่าน fd ไปยังไพพ์ ใน:
yes | ( sleep 1; exec <&-; ps -fC yes)
1 2 1 0
จะมี 1 (subshell) จากนั้น 2 (subshell + sleep) จากนั้น 1 (subshell) จากนั้น 0 fd ที่อ่านจากไปป์หลังจากที่ subshell ปิด stdin อย่างชัดเจนและนั่นคือเมื่อyesจะได้รับ SIGPIPE
ข้างต้นเชลล์ส่วนใหญ่ใช้ a pipe(2)ขณะที่ksh93ใช้ a socketpair(2)แต่พฤติกรรมนั้นเหมือนกันในเรื่องนั้น
เมื่อกระบวนการละเว้น SIGPIPE ที่โทรระบบการเขียน (โดยทั่วไปwriteแต่อาจจะpwrite, send, splice... ) ผลตอบแทนที่มีEPIPEข้อผิดพลาด ดังนั้นกระบวนการที่ต้องการจัดการไปป์ที่แตกด้วยตนเองจึงมักจะมองข้าม SIGPIPE และดำเนินการตามข้อผิดพลาด EPIPE