Под этим я подразумеваю функционально. Я использую fileno для преобразования FILE * в fd, и он возвращается без каких-либо ошибок, но когда я использую pread для этого возвращаемого значения из fileno, это дает мне ошибку неверного дескриптора файла. IE:
FILE* fin;
FILE* fout;
int fd, result;
fd = open("path", O_RDWR);
// Do stuff with fin and fout
// fout is the file with all of the stuff I want to copy to the fd
fd = fileno(fout);
result = pread(fd, buf, size, offset); // Bad file descriptor--returns a 9
Я не могу понять, что заставляет pread выдавать мне эту ошибку, и это сводит меня с ума.
open
? - person James McLaughlin   schedule 30.04.2012pread
возвращает 9 или возвращает -1 и устанавливаетerrno
в 9? Если первое, это означает, что по какому-то совпадению осталось прочитать 9 байт. Если он возвращает -1, аerrno
равно 9 (EBADF
), то что-то ужеfclose
dfout
. - person torek   schedule 30.04.2012fout = fopen("path", "rw");
? Код, который вы разместили, показывает, чтоfout
не определен, поэтому было бы ужасно удивительно, если бы он сделал что-то полезное. - person Thomas M. DuBuisson   schedule 30.04.2012