GNU/Linux >> Linux Esercitazione >  >> Linux

Differenza tra Eot ed Eof?

Capisco che EOT è codice ASCII 4, mentre EOF è codificato come -1 (almeno in C). Prima di scoprire che EOF è mappato su -1, ho pensato che fosse solo un sinonimo di EOT. Perché EOF è mappato su -1 anziché su EOT? Per quanto ne so, entrambi fanno la stessa cosa, ovvero terminare un flusso di file. L'unica differenza che posso discernere è che EOT termina anche un comando nella shell bash. Vorrei una descrizione delle precise differenze tecniche tra questi due codici.

Risposta accettata:

In generale, EOF non è un personaggio; è l'assenza di un personaggio.

Se un programma viene eseguito su un terminale in modalità canonica con impostazioni predefinite (ovvero un semplice programma C che utilizza solo stdio), non vedrà mai il carattere ASCII EOT. Il driver del terminale riconosce quel carattere e crea una condizione EOF (che al livello basso è un valore di ritorno 0 da read() ). La libreria stdio traduce quella condizione EOF nel valore restituito appropriato per la funzione in questione (l'EOF macro per getchar() , un puntatore nullo per fgets() , ecc.)

Il valore numerico di EOF la macro non ha rilevanza da nessuna parte tranne che nella libreria C e non dovrebbe influenzare la tua comprensione del significato della condizione EOF.


Linux
  1. Differenza tra shell di accesso e shell non di accesso?

  2. Differenza tra 2>&-, 2>/dev/null, |&, &>/dev/null E>/dev/null 2>&1?

  3. Qual è la differenza tra Sudo Su – e Sudo Su –?

  4. Differenza tra [0-9], [[:digit:]] e D?

  5. Differenza tra le applicazioni Gtk e Qt?

Differenza tra apt e apt-get spiegato

Differenza tra utente Sudo e utente root?

La differenza tra Nss e Pam?

Differenza tra $HOME e '~' (tilde)?

differenza tra netstat e ss in linux?

Differenza tra ${} e $() in Bash