Fopen создает дескриптор файла? - PullRequest
8 голосов
/ 10 марта 2012

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

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

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

Спасибо.

1 Ответ

16 голосов
/ 10 марта 2012

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

...