Linux文件I/O编程(二)lseek函数
2015-09-26 22:12
531 查看
文件I/O编程处理open、read、write、close,等必要函数对文件进行读写操作外,lseek、fcntl也是I/O编程很重要的函数。
lseek函数
lseek函数主要用来移动当前读写位置,第一个参数是文件描述符fd,第二个参数是偏移距离,第三个参数是文件内容指针宏,分别有SEEK_SET(文件头),SEEK_CURR(当前位置),SEEK_END(文件尾部)。该函数的执行成功返回文件当前位置的偏移量,若是失败返回-1.
改变文件位置指针很重要,如果处理不好会出现读写文件时读取错误数据或者将数据写在错误的位置,如下例
打开或者创建一个文件,将要写的内容写进文件之后,文件位置指针指向文件的末尾,当没有关闭文件的情况下如果要再次将文件内容读取出来,那必定读不到想要的数据,必须要将文件位置指针重新至于文件的开头。这样改变位置,就不需要再次关闭文件再去读。
lseek通常还可以用来衡量一个文件的大小,如上述打开的文件,要获取该文件的大小,即int filesize=lseek(fd,0,SEEK_END);filesize即为该文件的大小。
lseek还可以用来帮助创建一个空洞文件。如:
程序中lseek设置好相应大小的偏移量,但是还是注意一点,设置好偏移量之后必须要有一条write的函数,写一个东西,否则空洞文件创建不成功,大小还是0.程序运行结果如下
lseek函数
lseek函数主要用来移动当前读写位置,第一个参数是文件描述符fd,第二个参数是偏移距离,第三个参数是文件内容指针宏,分别有SEEK_SET(文件头),SEEK_CURR(当前位置),SEEK_END(文件尾部)。该函数的执行成功返回文件当前位置的偏移量,若是失败返回-1.
改变文件位置指针很重要,如果处理不好会出现读写文件时读取错误数据或者将数据写在错误的位置,如下例
打开或者创建一个文件,将要写的内容写进文件之后,文件位置指针指向文件的末尾,当没有关闭文件的情况下如果要再次将文件内容读取出来,那必定读不到想要的数据,必须要将文件位置指针重新至于文件的开头。这样改变位置,就不需要再次关闭文件再去读。
lseek通常还可以用来衡量一个文件的大小,如上述打开的文件,要获取该文件的大小,即int filesize=lseek(fd,0,SEEK_END);filesize即为该文件的大小。
lseek还可以用来帮助创建一个空洞文件。如:
程序中lseek设置好相应大小的偏移量,但是还是注意一点,设置好偏移量之后必须要有一条write的函数,写一个东西,否则空洞文件创建不成功,大小还是0.程序运行结果如下
相关文章推荐
- Linux socket 初步
- linux lsof详解
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝
- vivi下重新调整分区
- Linux VS Unix:Linux欲一统天下 Unix不死
- linux下设定环境变量