GNU/Linux >> Belajar Linux >  >> Linux

Perbedaan Antara Eot dan Eof?

Saya mengerti bahwa EOT adalah kode ASCII 4, sedangkan EOF dikodekan sebagai -1 (setidaknya dalam C). Sebelum saya mengetahui bahwa EOF dipetakan ke -1, saya pikir itu hanya sinonim untuk EOT. Mengapa EOF dipetakan ke -1 daripada EOT? Sejauh yang saya tahu, mereka berdua melakukan hal yang sama, yaitu menghentikan aliran file. Satu-satunya perbedaan yang dapat saya lihat adalah bahwa EOT juga menghentikan perintah di bash Shell. Saya ingin deskripsi perbedaan teknis yang tepat antara kedua kode ini.

Jawaban yang Diterima:

Secara umum, EOF bukanlah sebuah karakter; itu karena tidak adanya karakter.

Jika sebuah program berjalan pada terminal dalam mode kanonik dengan pengaturan default (yaitu program C biasa yang hanya menggunakan stdio), ia tidak akan pernah melihat karakter ASCII EOT. Driver terminal mengenali karakter itu dan membuat kondisi EOF (yang pada level rendah adalah nilai balik 0 dari read() ). Pustaka stdio menerjemahkan kondisi EOF tersebut ke dalam nilai kembalian yang sesuai untuk fungsi yang dimaksud (EOF makro untuk getchar() , pointer nol untuk fgets() , dll.)

Nilai numerik dari EOF makro tidak relevan di mana pun kecuali di pustaka C, dan seharusnya tidak memengaruhi pemahaman Anda tentang arti kondisi EOF.


Linux
  1. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  2. Perbedaan Antara Perpipaan Dan Ekspansi Perintah?

  3. Perbedaan Antara Pengguna Sudo Dan Pengguna Root?

  1. Perbedaan Antara Qemu dan KVM

  2. Perbedaan antara CLOCK_REALTIME dan CLOCK_MONOTONIC?

  3. Perbedaan antara GNUWin32 dan cygwin

  1. Perbedaan Antara Shell Login dan Shell Non-login?

  2. Perbedaan antara ${} dan $() di Bash

  3. perbedaan antara cgroup dan namespace