Создает ли fopen файловый дескриптор?

Глядя на справочную страницу для fopen, я не могу получить определенного ответа на этот вопрос.

FILE *fopen(const char *path, const char *mode);

Я понимаю, что fopen возвращает указатель файла на поток, но создается ли дескриптор файла как побочный продукт? Я пытаюсь убедиться, что я включаю флаг FD_CLOEXEC при каждом создании файлового дескриптора. Если дескриптор файла фактически создан из fopen, как лучше всего использовать fnctl(), когда нет «fd» для использования в качестве входных данных.

Спасибо.


person Jon Kump    schedule 09.03.2012    source источник


Ответы (1)


В Unix (который я предполагаю, что вы используете, потому что вы упоминаете fcntl) он действительно открывает файловый дескриптор, так как fopen(3) в конечном итоге вызывает open(2).. Вы можете получить этот файловый дескриптор через fileno(3).

person cnicutar    schedule 09.03.2012