Một quá trình nhận được SIGPIPE khi nó cố ghi vào một đường ống (có tên hoặc không) hoặc ổ cắm loại SOCK_STREAM không còn đầu đọc.
Đó thường là hành vi muốn. Một ví dụ điển hình là:
find . | head -n 1
Bạn không muốn findtiếp tục chạy một khi headđã chấm dứt (và sau đó đóng bộ mô tả tệp duy nhất mở để đọc trên đường ống đó).
Các yeslệnh thường dựa vào đó tín hiệu chấm dứt.
yes | some-command
Sẽ viết "y" cho đến khi một số lệnh kết thúc.
Lưu ý rằng không chỉ khi thoát lệnh, đó là khi tất cả người đọc đã đóng fd đọc của họ vào đường ống. Trong:
yes | ( sleep 1; exec <&-; ps -fC yes)
1 2 1 0
Sẽ có 1 (subshell), sau đó 2 (subshell + ngủ), sau đó 1 (subshell) rồi 0 fd đọc từ ống sau khi subshell đóng rõ ràng stdin của nó và khi đó yessẽ nhận được SIGPIPE.
Ở trên, hầu hết các shell sử dụng một pipe(2)thời gian ksh93sử dụng a socketpair(2), nhưng hành vi là như nhau về vấn đề đó.
Khi một quá trình bỏ qua các SIGPIPE, cuộc gọi hệ thống chữ viết (nói chung write, nhưng có thể pwrite, send, splice...) trở lại với một EPIPElỗi. Vì vậy, các quy trình muốn xử lý đường ống bị hỏng theo cách thủ công thường bỏ qua SIGPIPE và thực hiện hành động khi xảy ra lỗi EPIPE.