Fim do arquivo - End-of-file

Na computação , o fim do arquivo ( EOF ) é uma condição em um sistema operacional de computador em que nenhum outro dado pode ser lido de uma fonte de dados. A fonte de dados geralmente é chamada de arquivo ou fluxo .

Detalhes

Na biblioteca padrão C , as funções de leitura de caracteres, como getchar, retornam um valor igual ao valor simbólico (macro) EOFpara indicar que ocorreu uma condição de fim de arquivo. O valor real de EOFé dependente da implementação e deve ser negativo (mas geralmente é -1, como em glibc ). As funções de leitura de bloco retornam o número de bytes lidos e, se for menor do que o solicitado, o final do arquivo foi atingido ou ocorreu um erro (verificação errnoou função dedicada, como ferrormuitas vezes é necessária para determinar qual).

Personagem EOF

A entrada de um terminal nunca "termina" realmente (a menos que o dispositivo seja desconectado), mas é útil inserir mais de um "arquivo" em um terminal, portanto, uma sequência de teclas é reservada para indicar o fim da entrada. No UNIX, a tradução do pressionamento de tecla para EOF é realizada pelo driver do terminal, portanto, um programa não precisa distinguir os terminais de outros arquivos de entrada. Por padrão, o driver converte um caractere Control-D no início de uma linha em um indicador de fim de arquivo. Para inserir um caractere Control-D (ASCII 04) real no fluxo de entrada, o usuário o precede com um caractere de comando "aspas" (geralmente Control-V ). O AmigaDOS é semelhante, mas usa Control- \ em vez de Control-D.

No DOS e no Windows (e no CP / M e em muitos sistemas operacionais DEC , como RT-11 ou VMS ), a leitura do terminal nunca produzirá um EOF. Em vez disso, os programas reconhecem que a fonte é um terminal (ou outro "dispositivo de caractere") e interpretam um determinado caractere ou sequência reservada como um indicador de fim de arquivo; mais comumente é um ASCII Control-Z , código 26. Alguns programas MS-DOS, incluindo partes do shell do Microsoft MS-DOS ( COMMAND.COM ) e programas utilitários do sistema operacional (como EDLIN ), tratam um Control-Z em um arquivo de texto marcando o fim de dados significativos e / ou anexar um Control-Z ao final ao escrever um arquivo de texto. Isso foi feito por duas razões:

  • Compatibilidade para trás com o CP / M . O sistema de arquivos CP / M registrava apenas os comprimentos dos arquivos em múltiplos de "registros" de 128 bytes, portanto, por convenção, um caractere Control-Z era usado para marcar o fim de dados significativos se terminassem no meio de um registro. O sistema de arquivos MS-DOS sempre registrou o comprimento exato em bytes dos arquivos, então isso nunca foi necessário no MS-DOS.
  • Ele permite que os programas usem o mesmo código para ler a entrada de um terminal e de um arquivo de texto.

No padrão de fita magnética ANSI X3.27-1969 , o fim do arquivo era indicado por uma marca de fita , que consistia em um espaço de aproximadamente 3,5 polegadas de fita seguido por um único byte contendo o caractere 13 (hex) para nove trilhas fitas e 17 (octal) para fitas de sete trilhas . O fim da fita , comumente abreviado como EOT , era indicado por duas marcas de fita. Esse foi o padrão usado, por exemplo, no IBM 360 . A faixa reflexiva usada para anunciar o fim físico iminente da fita também era chamada de marcador EOT .

Veja também

Referências

  1. ^ Wayne Pollock. "Visão geral do documento Shell Here" . hccfl.edu. Arquivado do original em 29/05/2014 . Página visitada em 2014-05-28 .
  2. ^ "A Biblioteca GNU C" . www.gnu.org .
  3. ^ "Transferência de fita (pré-1977): Troca de mídia: MARC 21 Especificações para estrutura de registros, conjuntos de caracteres e troca de mídia (Biblioteca do Congresso)" . www.loc.gov .