Bir işlem, okuyucusu olmayan bir boruya (adlandırılmış veya değil) veya SOCK_STREAM tipi bir sokete yazmaya çalıştığında bir SIGPIPE alır.
Genelde istenen davranış. Tipik bir örnek:
find . | head -n 1
Bir findkere headsonlandırıldıktan sonra çalışmaya devam etmek istemezsiniz (ve daha sonra bu dosya üzerinde okumak için açık olan tek dosya tanımlayıcısını kapattı).
yesKomut tipik sonlandırmak için bu sinyalin dayanır.
yes | some-command
Bazı komutlar sona erene kadar "y" yazacaktır.
Sadece komutlar çıktığında değil, tüm okuyucular boruya okumalarını kapattığını unutmayın. İçinde:
yes | ( sleep 1; exec <&-; ps -fC yes)
1 2 1 0
1 (alt kabuk), sonra 2 (alt kabuk + uyku), sonra 1 (alt kabuk) ve sonra alt kabuk kendi stdinini kapattıktan sonra borudan 0 fd okuyacak ve o zaman yesbir SIGPIPE alacaksınız.
Yukarıda, çoğu kabuk bir pipe(2)süre ksh93kullanır socketpair(2), ancak davranış bu açıdan aynıdır.
Bir süreç SIGPIPE, yazma sistemi çağrıyı görmezden zaman (genellikle writefakat olabilir pwrite, send, splice...) bir ile döner EPIPEhatası. Bu nedenle, kırılmış boruyu manuel olarak ele almak isteyen işlemler tipik olarak SIGPIPE'yi göz ardı eder ve bir EPIPE hatasıyla harekete geçer.