Как конвертировать указатель файла (FILE* fp) в файловый дескриптор (int fd)?



у меня есть FILE *, возвращенный вызов fopen(). Мне нужно получить файловый дескриптор от него, чтобы сделать вызовы, такие как fsync(fd) на нем. Какова функция для получения дескриптора файла из Указателя файла?

551   2  

2 ответов:

правильная функция int fileno(FILE *stream). Его можно найти в <stdio.h>, и является стандартом POSIX, но не стандартным C.

даже если fileno(FILE *) может возвращать дескриптор файла, будьте очень осторожны, чтобы не обойти буфер stdio. Если есть данные буфера (чтение или незаполненная запись), чтение/запись из файлового дескриптора может дать вам неожиданные результаты.

чтобы ответить на один из побочных вопросов, чтобы преобразовать дескриптор файла в указатель файла, используйте fdopen(3)

Comments

    Ничего не найдено.