lseek函数:
off_t lseek(int fd ,off-t offset, int whence)
调用#include <sys/types.h>和#include <unistd.h>头文件可使用该函数,该函数调用成功会放回新的文件位移量,若出错为-1
参数:
fd:已打开文件的描述符。
offset:位移量
whence :定位的位置
SEEK_SET:将该文件的位移量设置为距文件开始出offset个字节
SEEK_CUR:将该文件的位移量设置为距文件当前值加offset,offset可为正或负,正就往前,负即往后。
SEEK_END:将该文件的位移量设置为文件长度加offset,亦可正科负
lseek 不能引用管道或者FIFO,则返回-1
例:若使用下面函数:lseek(fdin, 0L, SEEK_END),就可以读出真个文件的长度,在我的理解中,这偏移量就是到你指定位置的部分大小。
如果在文件的尾部写的话会怎样呢?会产生空洞,什么是空洞呢?来试验一下:写一个程序测试一下,
运行结构如下:
运行后在新的文件可以看到,两个0123456789之间有一段是什么都没有的,这是文件中的空洞部分