lseek()
ファイル記述子の位置を返すことになっています。
ドキュメントには次のように記載されています。
正常に完了すると、lseek() は結果のオフセット位置を、ファイルの先頭からのバイト単位で返します。それ以外の場合は、値 -1 が返され、エラーを示すために errno が設定されます。
問題は、これでもうまくいかないことです:
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
printf("size off_t: %i\n", sizeof(off_t));
off_t pos;
pos = lseek(file, (off_t)0, SEEK_CUR);
printf("pos: %lli\n", pos);
// same result for SEEK_SET and SEEK_END
pos = lseek(file, (off_t)2352, SEEK_CUR);
printf("pos: %lli\n", pos);
これは私に与えます:
サイズ off_t: 8 位置: 0 位置: 0
どうしてこれなの?生の I/O 関数を使用して、現在のオフセットを見つける代替手段はありますか? ( read
、open
、lseek
、 …)
編集1:
例をより簡単にしようとしました。