Смешивание fdopen() и open() -> плохой дескриптор файла

int source = open("hi", O_CREAT | O_RDONLY);
int dest = open("resultfile", O_CREAT | O_RDWR | O_TRUNC);

FILE* source1 = fdopen(source, "r");  
FILE* dest1 = fdopen(dest, "w+");

// outside of a testcase I would write something into 'resultfile' here

close(source);
close(dest);
fclose(source1);
fclose(dest1);

int sourcef = open("resultfile", O_RDONLY);
printf(strerror(errno)); // <--- Bad file descriptor

Я не понимаю, почему? Как я могу успешно смешивать потоковый ввод-вывод с open()?

Библиотека, с которой я работаю, принимает только целочисленный fd (и библиотека внутренне отвечает за его закрытие, предположительно с помощью close()), но мне все еще нужно работать с файлом, и я не понимаю, как это возможно без вызовов f(), таких как (fread(), ftell() и т.д.)

5
задан Blub 7 December 2011 в 14:41
поделиться