GNU/Linux >> Belajar Linux >  >> Linux

Mengapa saya mendapatkan cat:write error:Broken pipe jarang dan tidak selalu

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.


Linux
  1. Mengapa Anda mendapatkan cp:menghilangkan kesalahan direktori di Linux dan bagaimana mengatasinya

  2. Mengapa Bash Tidak Menyimpan Perintah yang Dimulai Dengan Spasi?

  3. Potong / Grep Dan Df -h?

  1. Grep Dan Ekor -f?

  2. Mengapa File Descriptor Dibuka Dan Hanya Dibaca Sekali?

  3. Mengapa Rm -rf Dan Bukan Rmdir -rf?

  1. Mengapa Rsync Gagal Dengan Pipa Rusak (32), Kesalahan Di Soket Io (kode 10) Di Io.c (820)??

  2. 7 Contoh Operator Linux Grep OR, Grep AND, Grep NOT

  3. mengapa saya mendapatkan kesalahan format Exec saat menulis layanan linux saya?