En informática , el fin de archivo ( EOF ) [ 1 ] es una condición en un sistema operativo de computadora donde no se pueden leer más datos de una fuente de datos. La fuente de datos generalmente se llama archivo o flujo .
Detalles
En la biblioteca estándar de C , las funciones de lectura de caracteres como getchar devuelven un valor igual al valor simbólico (macro) EOFpara indicar que se ha producido una condición de fin de archivo. El valor real de EOFdepende de la implementación y debe ser negativo (comúnmente es −1, como en glibc [ 2 ] ). Las funciones de lectura de bloques devuelven el número de bytes leídos, y si este es menor que el solicitado, entonces se ha alcanzado el final del archivo o se ha producido un error (es necesario comprobar errnoo de una función dedicada, como ferrorpara determinar cuál).
Carácter EOF
La entrada desde un terminal nunca "termina" realmente (a menos que el dispositivo se desconecte), pero es útil ingresar más de un "archivo" en un terminal, por lo que se reserva una secuencia de teclas para indicar el final de la entrada. En UNIX , la traducción de la pulsación de tecla a EOF la realiza el controlador del terminal, por lo que un programa no necesita distinguir los terminales de otros archivos de entrada. Por defecto, el controlador convierte un carácter Control-D al inicio de una línea en un indicador de fin de archivo. Para insertar un carácter Control-D real (ASCII 04) en el flujo de entrada, el usuario lo precede con un carácter de comando "comillas" (generalmente Control-V ). AmigaDOS es similar, pero usa Control-\ en lugar de Control-D.
En DOS y Windows (y en CP/M y muchos sistemas operativos DEC como el monitor PDP-6 , [ 3 ] RT-11 , VMS o TOPS-10 [ 4 ] ), leer desde la terminal nunca producirá un EOF. En cambio, los programas reconocen que la fuente es una terminal (u otro "dispositivo de caracteres") e interpretan un carácter o secuencia reservados como un indicador de fin de archivo; lo más común es que sea un Control-Z ASCII , código 26. Algunos programas de MS-DOS, incluidas partes del shell de Microsoft MS-DOS ( COMMAND.COM ) y programas de utilidad del sistema operativo (como EDLIN ), tratan un Control-Z en un archivo de texto como marcando el final de datos significativos, y/o agregan un Control-Z al final al escribir un archivo de texto. Esto se hizo por dos razones:
- Compatibilidad con versiones anteriores de CP/M . El sistema de archivos de CP/M (y también el FAT original de 8 bits implementado en Microsoft BASIC ) solo registraba la longitud de los archivos en múltiplos de 128 bytes, por lo que, por convención, se utilizaba el carácter Control-Z para marcar el final de los datos relevantes si terminaban en medio de un registro. El sistema de archivos FAT12, introducido con 86-DOS y MS-DOS, siempre ha registrado la longitud exacta de los archivos en bytes, por lo que esto nunca fue necesario en DOS.
- Permite que los programas utilicen el mismo código para leer datos tanto de una terminal como de un archivo de texto.
En el estándar de cinta magnética ANSI X3.27-1969 , el final del archivo se indicaba mediante una marca de cinta , que consistía en un espacio de aproximadamente 3,5 pulgadas de cinta seguido de un solo byte que contenía el carácter 0x13(hexadecimal) para cintas de nueve pistas y 017(octal) para cintas de siete pistas . [ 5 ] El final de la cinta , comúnmente abreviado como EOT , se indicaba mediante dos marcas de cinta. Este era el estándar utilizado, por ejemplo, en el IBM 360. La banda reflectante que se utilizaba para anunciar el inminente final físico de la cinta también se denominaba marcador EOT .
Véase también
Referencias
- ↑ Pollock, Wayne. "Shell Here Document Overview" . hccfl.edu. Archivado del original el 29 de mayo de 2014. Consultado el 28 de mayo de 2014 .
- ↑ "La biblioteca C de GNU" . www.gnu.org .
- ↑ "Tabla de características de dispositivos de E/S - Consolas o teletipos". Manual del sistema de multiprogramación PDP-6 (PDF) . Maynard, Massachusetts, EE. UU.: Digital Equipment Corporation (DEC). 1965. pág. 43. DEC-6-0-EX-SYS-UM-IP-PRE00. Archivado (PDF) del original el 14/07/2014 . Consultado el 10/07/2014 . (1+84+10 páginas)
- ↑ "5.1.1.1. Funciones dependientes del dispositivo - Modos de datos - Software dúplex completo A(ASCII) y AL(línea ASCII)". Manual de referencia PDP-10: Comunicación con el monitor - Monitores de tiempo compartido (PDF) . Vol. 3. Digital Equipment Corporation (DEC). 1969. págs. 5-3 – 5-6 [5-5 (431)]. Archivado (PDF) del original el 15/11/2011 . Recuperado el 10/07/2014 . (207 páginas)
- ↑ "Transferencia en cinta (anterior a 1977): Medios de intercambio: Especificaciones MARC 21 para la estructura de registros, conjuntos de caracteres y medios de intercambio (Biblioteca del Congreso)" . www.loc.gov .
- Biblioteca estándar de C
- archivos informáticos