文件的随机读写。目前为止,文件都是顺序访问。读写都是从当前文件的偏移位置开始,然后文件偏移值自动的增加到刚好超出读或者写结束的位置
是它为下一次作好准备。在linux中有文件偏移。使得随机访问变得简单,只需将当前文件位置移植到有关位置,将迫使read()或write()函数发生在这一位置,
除非文件被O_APPEND打开,在这种情况下,write()调用然将在结尾
lseek 对应于 c库中的 fseek
off_t lseek(int fd,off_t offset, int base) 当调用成功时则返回目前的读写位置,也就是距离文件开头多少个字节。若有错误则返回-1,errno 会存放错误代码
offset:偏移量  base:偏移起始位置(文件头(SEEK_SET)开始偏移,当前指针位置开始偏移(SEEK_CUR),文件尾(SEEK_END))unistd.h

 1 #include <sys/types.h>
2 #include <sys/stat.h>
3 #include <fcntl.h>
4 #include<errno.h>
5 #include<unistd.h>
6 #include<stdio.h>
7 #include<stdlib.h>
8 #include<string.h>
9 //#define ERR_EXIT(m) (perror(m),exit(EXIT_FAILURE))
10 #define ERR_EXIT(m)\
11 do\
12 {\
13 perror(m);\
14 exit(EXIT_FAILURE);\
15 }while(0) //宏要求一条语句
16 int main(void)
17 {
18 int fd;
19 fd=open("test.txt",O_RDONLY); //test.txt中ABCDE
20 if(fd==-1)
21 ERR_EXIT("open error");
22 char buf[1024]={0};
23 int ret=read(fd,buf,5);
24 printf("buf=%s\n",buf);
25 if(ret==-1)
26 ERR_EXIT("read error");
27 ret=lseek(fd,0,SEEK_CUR); //成功返回目前偏移位置,可以通过这种方式获取当前文件偏移位置。
28 if(ret==-1)
29 ERR_EXIT("lseek error");
30 printf("current seek point %d\n",ret); //5
31 return 0;
32 }

最新文章

  1. Application.Run()和Form.Show()以及Form.ShowDialog()
  2. GIT常用命令备忘
  3. php COOKIE和SESSION的一些理解
  4. 【leetcode❤python】172. Factorial Trailing Zeroes
  5. WPF工作笔记:本地化支持、主进程通知、两种最常用异步编程方式
  6. Unity3D之Mecanim动画系统学习笔记(五):Animator Controller
  7. OFBiz之SVN下载地址
  8. js时间戳和日期字符串相互转换
  9. Python3玩转儿 机器学习(3)
  10. [Java] 練習用對戰小遊戲
  11. Python中map函数
  12. OpenCV——KAZE、AKAZE特征检测、匹配与对象查找
  13. ThreadLocal 详解
  14. 97.5%准确率的深度学习中文分词(字嵌入+Bi-LSTM+CRF)
  15. win 安装pip和requests
  16. 远程操作与端口转发 SSH原理与运用
  17. 基于GIT的管理
  18. python基础-类的反射
  19. Spark1.0.0 生态圈一览
  20. Swing(Java)--维基百科

热门文章

  1. 正式班D9
  2. 16.深入k8s:Informer使用及其源码分析
  3. python selenium 自动登陆
  4. sql server 2008 r2 直接下载地址,可用迅雷下载
  5. CentOS7防止root密码被破解
  6. JAVA递归实现线索化二叉树
  7. django—ORM相关
  8. 如何使用FastCGI处理自定义HTTP头
  9. BootStrapValidator表单验证插件的学习和使用
  10. RAM ROM区别记忆