GNU/Linux >> Tutoriels Linux >  >> Linux

Différence entre Eot et Eof?

Je comprends que EOT est le code ASCII 4, alors que EOF est codé comme -1 (au moins en C). Avant de découvrir que EOF est mappé sur -1, je pensais que ce n'était qu'un synonyme d'EOT. Pourquoi EOF est-il mappé sur -1 plutôt que sur EOT ? Autant que je sache, ils font tous les deux la même chose, c'est-à-dire mettre fin à un flux de fichiers. La seule différence que je peux discerner est que EOT termine également une commande dans le shell bash. Je voudrais une description des différences techniques précises entre ces deux codes.

Réponse acceptée :

Généralement, EOF n'est pas un personnage; c'est l'absence d'un personnage.

Si un programme s'exécute sur un terminal en mode canonique avec les paramètres par défaut (c'est-à-dire un programme C ordinaire qui utilise simplement stdio), il ne verra jamais le caractère ASCII EOT. Le pilote de terminal reconnaît ce caractère et crée une condition EOF (qui au niveau bas est une valeur de retour 0 de read() ). La bibliothèque stdio traduit cette condition EOF dans la valeur de retour appropriée pour la fonction en question (le EOF macro pour getchar() , un pointeur nul pour fgets() , etc.)

La valeur numérique de EOF La macro n'a d'importance que dans la bibliothèque C, et elle ne devrait pas influencer votre compréhension de la signification de la condition EOF.


Linux
  1. Différence entre le shell de connexion et le shell sans connexion ?

  2. Différence entre 2>&-, 2>/dev/null, |&, &>/dev/null et>/dev/null 2>&1 ?

  3. Quelle est la différence entre Sudo Su - et Sudo Su - ?

  4. Différence entre l'expansion de la tuyauterie et de la commande ?

  5. Différence entre l'utilisateur Sudo et l'utilisateur root ?

Différence entre apt et apt-get expliquée

Différence entre CLOCK_REALTIME et CLOCK_MONOTONIC ?

Différence entre GNUWin32 et cygwin

différence entre netstat et ss sous linux?

Différence entre ${} et $() dans Bash

différence entre les cgroups et les espaces de noms