2012-03-09 4 views
8

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

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

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

Спасибо.

ответ

16

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

Смежные вопросы