Как linux обнаруживает EOF текстового файла? - PullRequest
0 голосов
/ 10 ноября 2019

Мне было интересно, как Linux обнаруживает конец текстового файла. Все ли текстовые файлы заканчиваются нулевым байтом, и Linux использует это в своих интересах?

Ответы [ 2 ]

2 голосов
/ 10 ноября 2019

Современные операционные системы, такие как Linux, не используют содержимое файла для определения конца файла, они хранят длину файла в файловой системе и отслеживают положение файла, чтобы определить, доступно ли больше содержимого для чтения.

На самом деле текстовые файлы вообще не должны содержать нулевые байты. Они обычно заканчиваются маркером конца строки (\n в Linux OS / X, CR / LF в устаревших системах). Одним заметным исключением из этого правила является пустой файл.

При чтении с устройства, такого как окно терминала, ОС полагается на драйвер устройства для предоставления информации о конце файла, что в случаетерминал может быть сигнализирован пользователем, введя системную комбинацию клавиш, такую ​​как Ctrl D в системах Unix и Ctrl Z Введите в операционных системах Microsoft.

0 голосов
/ 13 ноября 2019

С программной точки зрения, EOF может обнаруживать с помощью API ниже

  1. read(), возвращать 0.
  2. getchar(), возвращает -1.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...