Fin de fichier - End-of-file

En informatique , la fin de fichier ( EOF ) est une condition dans un système d' exploitation informatique où plus aucune donnée ne peut être lue à partir d'une source de données. La source de données est généralement appelée fichier ou flux .

Détails

Dans la bibliothèque standard C , les fonctions de lecture de caractères telles que getchar renvoient une valeur égale à la valeur symbolique (macro) EOFpour indiquer qu'une condition de fin de fichier s'est produite. La valeur réelle de EOFdépend de l'implémentation et doit être négative (mais est généralement -1, comme dans la glibc ). Les fonctions de lecture de bloc renvoient le nombre d'octets lus, et si celui-ci est inférieur à celui demandé, alors la fin du fichier a été atteinte ou une erreur s'est produite (vérification errnoou fonction dédiée, comme ferrorc'est souvent le cas pour déterminer laquelle).

caractère EOF

L'entrée d'un terminal ne "se termine" jamais vraiment (sauf si l'appareil est déconnecté), mais il est utile d'entrer plus d'un "fichier" dans un terminal, donc une séquence de touches est réservée pour indiquer la fin de l'entrée. Sous UNIX, la traduction de la frappe en EOF est effectuée par le pilote de terminal, de sorte qu'un programme n'a pas besoin de distinguer les terminaux des autres fichiers d'entrée. Par défaut, le pilote convertit un caractère Control-D au début d'une ligne en un indicateur de fin de fichier. Pour insérer un véritable caractère Control-D (ASCII 04) dans le flux d'entrée, l'utilisateur le fait précéder d'un caractère de commande "quote" (généralement Control-V ). AmigaDOS est similaire mais utilise Control-\ au lieu de Control-D.

Sous DOS et Windows (et sous CP/M et de nombreux systèmes d' exploitation DEC tels que RT-11 ou VMS ), la lecture à partir du terminal ne produira jamais un EOF. Au lieu de cela, les programmes reconnaissent que la source est un terminal (ou un autre « dispositif de caractères ») et interprètent un caractère ou une séquence réservé donné comme un indicateur de fin de fichier ; le plus souvent, il s'agit d'un ASCII Control-Z , code 26. Certains programmes MS-DOS, y compris des parties du shell Microsoft MS-DOS ( COMMAND.COM ) et des programmes utilitaires du système d'exploitation (comme EDLIN ), traitent un Control-Z dans un fichier texte comme marquant la fin des données significatives, et/ou ajoutez un Control-Z à la fin lors de l'écriture d'un fichier texte. Cela a été fait pour deux raisons :

  • Rétrocompatibilité avec CP/M . Le système de fichiers CP/M n'enregistrait que les longueurs des fichiers en multiples de "enregistrements" de 128 octets, donc par convention, un caractère Control-Z était utilisé pour marquer la fin des données significatives si elles se terminaient au milieu d'un enregistrement. Le système de fichiers MS-DOS a toujours enregistré la longueur exacte en octets des fichiers, cela n'a donc jamais été nécessaire sur MS-DOS.
  • Il permet aux programmes d'utiliser le même code pour lire les entrées d'un terminal et d'un fichier texte.

Dans la norme de bande magnétique ANSI X3.27-1969 , la fin du fichier était indiquée par une marque de bande , qui consistait en un espace d'environ 3,5 pouces de bande suivi d'un seul octet contenant le caractère 13 (hex) pour neuf pistes bandes et 17 (octal) pour les bandes à sept pistes . La fin de la bande , communément abrégée en EOT , était indiquée par deux marques de bande. C'était la norme utilisée, par exemple, sur IBM 360 . La bande réfléchissante qui était utilisée pour annoncer la fin physique imminente du ruban était également appelée marqueur EOT .

Voir également

Les références

  1. ^ Wayne Pollock. « Aperçu du document Shell Here » . hccfl.edu. Archivé de l'original le 2014-05-29 . Récupéré le 2014-05-28 .
  2. ^ "La bibliothèque GNU C" . www.gnu.org .
  3. ^ "Transfert de bande (avant 1977) : Médias d'échange : Spécifications MARC 21 pour la structure d'enregistrement, les jeux de caractères et les médias d'échange (Bibliothèque du Congrès)" . www.loc.gov .