Файловый ввод/вывод

Перед тем как выполнять операцию чтения или записи в файл, его необходимо открыть. Ядро ОС ведет списки открытых файлов для всех процессов. Эти списки называют таблицами файлов (file table). Они индексируются при помощи неотрицательных целых значений, называемых файловыми дескрипторами (file descriptor, fd). Каждая запись в списке содержит информацию об открытом файле, включая указатель на находящуюся в памяти копию индексного дескриптора (inode) и связанные метаданные: позицию в файле и режимы доступа. Пользовательское пространство и пространство ядра ОС использует файловые дескрипторы в качестве уникальных для каждого процесса маркеров. При открытии файла возвращается файловый дескриптор (точнее номер), а последующие операторы над файлом принимают файловый дескриптор как основной аргумент.

Файловые дескрипторы представляются типом int. У каждого процесса есть максимальное число файлов, которое он может открыть. Номер файлового дескриптора начинается с 0. По умолчанию максимальное число файлов, которое может открыть процесс, 1024. Таким образом, значения файловых дескрипторов колеблются в пределах 0..1023.

Каждый процесс при создании имеет по крайней мере три открытых дескриптора: 0, 1, 2, которые определяют соответственно стандартный ввод (standart in, stdin), стандартный вывод (standart out, stdout) и дескриптор стандартного вывода ошибочных ситуаций (standart error, stderr):

STDIN_FILEND – 0

STDOUT_FILEND – 1

STDERR_FILEND – 2

Файловые дескрипторы могут ссылаться не только на обычные файлы. Они также используются и для доступа к файлам устройств, каталогам, именованным конвейерам (FIFO-файлам), сокетам (socket) и др.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: