Какие бывают файловые дескрипторы и для чего они нужны?

В Unix файловый дескриптор — целочисленный идентификатор открытого ресурса в таблице процесса. Через него работают не только с файлами, но и с сокетами, каналами и устройствами.

Короткий ответ

Что ответить на собеседовании

В Unix файловый дескриптор — целочисленный идентификатор открытого ресурса в таблице процесса. Через него работают не только с файлами, но и с сокетами, каналами и устройствами.

Подробный разбор

Ответ с пояснениями

В Unix файловый дескриптор — целочисленный идентификатор открытого ресурса в таблице процесса. Через него работают не только с файлами, но и с сокетами, каналами и устройствами.

Обычно 0, 1 и 2 используются для stdin, stdout и stderr, однако их можно перенаправлять или закрывать. Новые дескрипторы создают open, socket, pipe и другие вызовы, освобождает close.

Разные дескрипторы могут ссылаться на одно open file description и разделять позицию и статусные флаги, например после dup. Сам номер локален процессу и после закрытия может быть повторно использован.

Поэтому важно закрывать ресурсы ровно по правилам владения, учитывать наследование и CLOEXEC. Дескриптор — не FILE* стандартной библиотеки C: FILE* является более высокоуровневой обёрткой с буферизацией.

Источник: man7.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее