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),就可以读出真个文件的长度,在我的理解中,这偏移量就是到你指定位置的部分大小。

 如果在文件的尾部写的话会怎样呢?会产生空洞,什么是空洞呢?来试验一下:写一个程序测试一下,

文件I/O(1)

文件I/O(1)

运行结构如下:

文件I/O(1)

运行后在新的文件可以看到,两个0123456789之间有一段是什么都没有的,这是文件中的空洞部分

相关文章: