GNU/Linux >> Belajar Linux >  >> Linux

Bisakah read(2) mengembalikan nol saat tidak di EOF?

Setelah beberapa penelitian, sebenarnya ada beberapa keadaan di mana ia akan mengembalikan 0 yang mungkin tidak Anda anggap sebagai "EOF".

Untuk detailnya, lihat definisi POSIX untuk read():http://opengroup.org/onlinepubs/007908775/xsh/read.html

Beberapa yang penting adalah jika Anda memintanya untuk membaca 0 byte -- periksa kembali bahwa Anda tidak secara tidak sengaja memberikan 0 padanya -- dan membaca melewati akhir bagian "tertulis" dari file (Anda sebenarnya dapat mencari melewati bagian akhir file, yang "memperluas" file dengan nol jika Anda menulis di sana, tetapi sampai Anda melakukannya, "EOF" masih berada di akhir bagian yang sudah ditulis).

Tebakan terbaik saya adalah Anda mengalami masalah waktu di suatu tempat. Beberapa pertanyaan yang perlu Anda tanyakan adalah "Bagaimana file-file ini ditulis?" dan "Apakah saya yakin panjangnya tidak nol saat saya mencoba membacanya?". Untuk yang kedua, Anda dapat mencoba menjalankan stat() pada file sebelum membacanya untuk mengetahui ukurannya saat ini.


Satu-satunya kasus lain yang dapat saya pikirkan tentang read() mengembalikan 0 adalah jika Anda meneruskan nbytes sebagai 0; kadang-kadang itu bisa terjadi jika Anda memasukkan ukuran sesuatu atau lainnya sebagai parameter. Mungkinkah itu yang terjadi saat ini?

Jika file belum siap untuk dibaca, yang harus terjadi adalah read mengembalikan -1 dan errno disetel ke EAGAIN.


Linux
  1. Bisakah Skrip Bash Dihubungkan ke File?

  2. Temukan File yang Tidak Dapat Dibaca Pengguna?

  3. Bisakah Skrip Dapat Dieksekusi Tetapi Tidak Dapat Dibaca?

  1. Mengapa Saya Tidak Dapat Membagi File .ape?

  2. Tidak Dapat Menjalankan Perintah Konfigurasi:"tidak ada File Atau Direktori Tersebut"?

  3. Temukan Usia File Tertua Dalam Satu Baris Atau Kembalikan Nol?

  1. /etc/motd tidak ditampilkan ketika pipa bernama?

  2. tar:baca singkat

  3. shebang atau bukan shebang