Alasannya karena pipa ditutup oleh grep
ketika masih ada beberapa data untuk dibaca dari cat
. Sinyal SIGPIPE
ditangkap oleh kucing dan keluar.
Yang biasanya terjadi dalam pipeline adalah shell menjalankan cat
dalam satu proses dan grep
di tempat lain. Stdout dari cat
terhubung ke ujung tulis pipa dan stdin dari grep
sampai akhir baca. Yang terjadi adalah grep
tekan pencarian pola yang tidak ada dan segera keluar menyebabkan ujung baca pipa ditutup, yang cat
tidak suka karena memiliki lebih banyak data untuk ditulis ke pipa. Karena tindakan tulis terjadi pada ujung lain yang telah ditutup, SIGPIPE
ditangkap oleh cat
yang langsung keluar.
Untuk kasus sepele seperti itu, Anda dapat menghapus penggunaan pipa sama sekali dan menjalankannya sebagai grep "pattern" file.txt
ketika konten file tersedia melalui stdin dari grep
dari mana ia dapat membaca.