Получить дескриптор файла из файлового указателя без fileno () - PullRequest
0 голосов
/ 29 июня 2019

Можно ли получить дескриптор файла из указателя файла, не используя fileno(FILE* file)?

В частности, возможно ли использование только функций из стандартной библиотеки C?(Причина моего вопроса на самом деле в том, что fileno() - это стандартная функция POSIX, но не стандартная C.)

1 Ответ

5 голосов
/ 29 июня 2019

Нет.

Файловые дескрипторы не являются частью стандарта C. В стандарте C отсутствует обязанность системы реализовывать стандартную библиотеку ввода-вывода с использованием файловых дескрипторов.Следовательно, нет способа получить дескриптор файла из файлового потока с использованием стандартного C;Концепция файлового дескриптора просто не является частью стандарта C.Вот почему fileno() не является стандартной функцией C.

Стандарт C11 §7.21 Ввод / вывод <stdio.h> не определяет никаких функций, использующих дескрипторы файлов.

Если fileno() не является стандартной функцией, какое значение возвращает функция open()?

Функция open() также не является частью стандартной C;ни одна из функций, использующих файловые дескрипторы, не является частью стандарта C. Стандарт POSIX предоставляет функции, использующие файловые дескрипторы - их множество, включая open() и fileno().Большинство систем предоставляют функции расширения, которые не определены в POSIX, но используют файловые дескрипторы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...