В Unix файловый дескриптор — целочисленный идентификатор открытого ресурса в таблице процесса. Через него работают не только с файлами, но и с сокетами, каналами и устройствами.
Какие бывают файловые дескрипторы и для чего они нужны?
В Unix файловый дескриптор — целочисленный идентификатор открытого ресурса в таблице процесса. Через него работают не только с файлами, но и с сокетами, каналами и устройствами.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В Unix файловый дескриптор — целочисленный идентификатор открытого ресурса в таблице процесса. Через него работают не только с файлами, но и с сокетами, каналами и устройствами.
Обычно 0, 1 и 2 используются для stdin, stdout и stderr, однако их можно перенаправлять или закрывать. Новые дескрипторы создают open, socket, pipe и другие вызовы, освобождает close.
Разные дескрипторы могут ссылаться на одно open file description и разделять позицию и статусные флаги, например после dup. Сам номер локален процессу и после закрытия может быть повторно использован.
Поэтому важно закрывать ресурсы ровно по правилам владения, учитывать наследование и CLOEXEC. Дескриптор — не FILE* стандартной библиотеки C: FILE* является более высокоуровневой обёрткой с буферизацией.
Источник: man7.org.