Под этим я имею в виду функцию. Я использую fileno для преобразования FILE * в fd, и он возвращается без какой-либо ошибки, но когда я использую pread для этого возвращаемого значения из fileno, это дает мне плохую ошибку дескриптора файла. IE:Есть ли способ скопировать содержимое файла FILE * в дескриптор файла?
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'? –
Использует ли 'pread' * return * 9 или возвращает -1 и устанавливает' errno' в 9? Если первое, это означает, что осталось 9 байтов, которые можно прочитать, по некоторым совпадениям. Если он возвращает -1, а 'errno' равно 9 (' EBADF'), то что-то уже 'fclose'd' fout'. – torek
Разве вы не хотите использовать 'fout = fopen (« путь »,« rw »);'? Вывешенный вами код показывает, что «fout» не определен, поэтому было бы удивительно, если бы он сделал что-нибудь полезное. –