每个打开的文件都有一个与其相关联的“当前文件偏移量”。通常,读、写操作都是从当前文件偏移量处开始,并使偏移两增加所读写的字节数。按系统默认的情况,当打开一个文件时,除非制定O_APPEND选项,否则该偏移量被设为0。
#include <unistd.h>
off_t lseek(int filedes, off_t offset, int where);
返回值:若成功则返回新的文件偏移量,若出错则返回-1
where:SEEK_SET,SEEK_CUR,SEEK_END。
1. 文件的当前偏移量应当是一个非负整数,但某些设备也可能允许负的偏移量。所以在比较lseek的返回值时,应当谨慎,不要测试它是否小于0,而要测试它是否等于-1.
2. 文件的偏移量可以大于当前文件长度,这种情况下,对该文件的下一次读写将加长该文件,并在文件中构成一个空洞。位于文件中但没有写过的字节都被读为0.