Ответ
Термин "файловый дескриптор" (file descriptor) унаследован из философии Unix, где "всё — файл" (или, точнее, всё представляется через файловый интерфейс). Дескриптор — это не сам файл на диске, а целочисленный идентификатор (int), который ядро ОС выдает процессу при открытии любого ресурса, поддерживающего операции чтения/записи.
Почему "файловый"? Потому что изначально этот механизм использовался для работы с обычными файлами, но позже был расширен на другие сущности, которые можно абстрагировать под тот же интерфейс:
- Обычные файлы и директории
- Сетевые сокеты
- Каналы (pipes)
- Устройства (например,
/dev/null)
Дескриптор — это индекс в таблице открытых файлов процесса, через который ядро знает, к какому конкретному объекту (файлу, сокету и т.д.) обращается программа.
Пример на языке C:
// open() возвращает файловый дескриптор — целое число, представляющее открытый файл.
int fd = open("/etc/hosts", O_RDONLY);
// read() использует этот дескриптор для операции.
ssize_t bytes_read = read(fd, buffer, sizeof(buffer));
close(fd); // Освобождение дескриптора.
Таким образом, название отражает историческую и концептуальную абстракцию, а не ограничение только дисковыми файлами.