0

これは、機能的に意味します。fileno を使用して FILE* を fd に変換していますが、エラーなしで返されますが、fileno から返された値に対して pread を使用すると、不適切なファイル記述子エラーが発生します。いいえ:

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 でこのエラーが発生する原因がわかりません。それが私を狂わせています。

4

2 に答える 2

1

私の推測では、それfoutは有効なFILE*ポインターではありません。確認しましたか?の戻り値を確認しましたfilenoか?

于 2012-04-29T23:01:04.133 に答える
1

からのリターンを確認しましたfileno()か?
fileno() のマニュアルページ

于 2012-04-30T18:04:08.213 に答える