输入/输出通常是顺序进行的,每次调用read和write进行读写的位置紧跟在前一次操作的位置之后.但是,有时候需要以任意顺序进行访问文件,系统调用lseek可以在文件中任意移动位置而不实际读写任何数据.
直接套用百度百科的解释吧,书上的不太能看懂.
每一个已打开的文件都有一个读写位置,当打开文件时通常其读写位置是指向文件开头,若是以附加的方式打开文件(如O_APPEND),则读写位置会指向文件尾。当read()或write()时,读写位置会随之增加,lseek()便是用来控制该文件的读写位置。参数fd 为已打开的文件描述符,参数offset为根据参数origin来移动读写位置的位移数。
offset:偏移量,每一读写操作所需要移动的距离,单位是字节的数量,可正可负(向前移,向后移)。
参数
origin为下列其中一种:(SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2).
SEEK_SET 将读写位置指向文件头后再增加offset个位移量。
SEEK_CUR 以目前的读写位置往后增加offset个位移量。
SEEK_END 将读写位置指向文件尾后再增加offset个位移量。
当origin值为SEEK_CUR 或SEEK_END时,参数offset允许负值的出现。
就是可以在任意位置读写的意思.
网友评论