调用lseek显式的为一个打开文件设置偏移量网络
#include <unistd.h>ip
off_t lseek(int fd, off_t offset, int where);pip
返回值:成功,返回新的文件偏移量;出错,返回-1文件
参数:pipe
offset:内核
相对where偏移的位置,能够为正数也能够为负数。当为正数时,从where开始向后偏移offset个字节;当为负数时,从where开始向前偏移offset绝对值个字节。参数
where:
SEEK_SET 将文件的偏移量设置为距离文件开始处offset个字节
SEEK_CUR 将文件的偏移量设置为当前值加offset个字节
SEEK_END 将文件的偏移量设置为文件长度加offset个字节
注:
①lseek能够检测文件是否支持设置偏移量,若是文件描述符指向一个pipe、FIFO或网络套接字,则返回-1,并将errno设置为ESPIPE。
②文件偏移量能够大于当前文件大长度,在这种状况下,对该文件的下一次写将加长该文件,并在文件中构成一个空洞。位于文件中没有写过的字节都被读为0.
③lseek仅将当前文件的偏移量记录在内核中,它并不引发任何的I/O操做。而后,该偏移量用于下一个读或写操做(这也是为何设置偏移量后要向文件中写一些内容才能建立空洞文件的缘由)
例子: