Linux 系统 IO之 lseek 函数


文章目录

  • Linux 系统 IO之 lseek 函数
    • 1. lseek 函数
      • 1.1 头文件包含
      • 1.2 函数原型
      • 1.3 函数功能
      • 1.4 函数返回值
      • 1.5 形参解释
    • 2. 案例程序

1. lseek 函数

1.1 头文件包含

// 因为形参包含 off_t 类型,所以要包含 types.h
#include <sys/types.h>
#include <unistd.h>

1.2 函数原型

// off_t 用于文件大小和偏移量
// 在我的 Ubuntu 64 位系统中,本质位 long int
off_t lseek(int fd, off_t offset, int whence);

1.3 函数功能

  • lseek 主要用来重新定位被打开文件的位移量
    根据其特性,还可以实现如下两个功能:
  • 获取文件的大小
  • 对文件进行向后扩展(文件件位置标记向后偏移 N 个字节,并且需要在 N+1 位置写如一个数据)

1.4 函数返回值

  • 返回值为正数 N:表示当前文件位置标记移动 N 字节
  • 返回值为复数N: 表述当前文件位置标记移动 N 字节

1.5 形参解释

  • int fd:文件描述符
  • off_t offset:与 whence 组合使用
  • int whence
    • SEEK_SET: 将文件位置标记设置为从头部偏移 offset 字节 位置
    • SEEK_CUR:将文件位置标记设置为从当前位置偏移 offset 字节 位置
    • SEEK_END:将文件位置标记设置为从尾部偏移 offset 字节 位置

2. 案例程序

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>int main()
{int fd = open("annNote", O_RDWR);if( -1 == fd){perror("open file");exit(1);}   //参数  文件描述符 偏移量 位置// 获取文件长度int ret = lseek(fd, 0, SEEK_END);printf("file length = %d\n", ret);// 文件拓展(把文件变成更大的文件) 只能向后拓展ret = lseek(fd, 100, SEEK_END);printf("return value %d\n", ret);// 为实现文件拓展需额外操作在文件尾部任意写如一个字符write(fd, "#", 1);                                                                                                                                         close(fd);return 0;
}

Linux 系统 IO之 lseek 函数相关推荐

  1. Linux系统编程 46 -lseek函数

    学习笔记 lseek函数 文件偏移 以前有接触到fseek 库函数,lseek和它有点类似. #include <sys/types.h> #include <unistd.h> ...

  2. 【Linux系统IO函数】lseek函数

    Linux系统IO函数-lseek函数 1.1 lseek函数与标准C库的fseek函数 lseek函数对应标准C库中的fseek函数 查看标准C库中的fseek函数使用说明: (shell输入) m ...

  3. 标准C库IO函数和Linux系统IO函数对比

    标准C库IO函数和Linux系统IO函数对比 man 3 fopen #查看函数详情 虚拟地址通过mmu映射到真是的地址空间

  4. Linux系统IO分析工具之iotop常用参数介绍

      Linux系统IO分析工具之iotop常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在一般运维工作中经常会遇到这么一个场景,服务器的IO负载很高(iostat中的 ...

  5. 【Linux系统编程】vfork() 函数详解

    00. 目录 文章目录 00. 目录 01. vfork函数 02. fork和vfork区别 03. 父子进程地址空间 04. 附录 01. vfork函数 函数分析 #include <sy ...

  6. 【Linux系统编程】fork()函数详解

    00. 目录 文章目录 00. 目录 01. 进程创建函数 02. 父子进程结构 03. 父子进程地址空间 04. 附录 01. 进程创建函数 #include <sys/types.h> ...

  7. Linux系统shell脚本之函数的使用

    Linux系统shell脚本之函数的使用 一.函数解释 二.函数参数 1.参数注意事项 2.特殊参数说明 三.函数实例1 四.函数实例2 一.函数解释 1.函数(function)作用:函数可以在sh ...

  8. 【Linux系统编程学习】Linux系统IO函数(open、read、write、lseek)

    此为牛客网Linux C++课程1.20课程笔记. 1.open函数 open函数有两种,分别是打开一个已经存在的文件和创建并打开一个不存在的文件. #include <sys/types.h& ...

  9. linux系统IO操作

    本文重点说明下面内容: 什么是标准IO,什么是文件IO? 什么是Direct IO? O_SYNC标识有什么意义? 各个层面的缓存如何同步? 还在page cache中的脏页可以读写吗? IO路径上的 ...

最新文章

  1. sqoop安装及使用
  2. 四叶草引导linux教程,百科全书之黑苹果四叶草引导配置 boot讲解
  3. BIM标准化系列写作思路
  4. xhr的get和post请求的简单实现
  5. [模板] 洛谷 P1137 旅行计划 (拓扑排序)
  6. php7没有pecl,PHP7 pecl 安装 mongodb扩展 和 PHPLIB
  7. Mac电脑截图卡屏了怎么办?
  8. 小眼睛适合大框还是小框眼镜_【图】小眼睛适合什么眼镜框 这个禁忌千万不要犯_小眼睛_伊秀服饰网|yxlady.com...
  9. 在Firefox中以电影院风格观看YouTube视频
  10. 微信小程序wx.uploadFile 上传图片慢优化
  11. Unity自定义快捷键功能,支持动态改键(附工程文件)
  12. 表情识别(七)--面部表情识别阶段综述(2018.4)
  13. 相机的变焦,对焦和景深的理解和照相機的成像原理
  14. 服务器主板准系统怎么拆,主板准系统及电源装箱步骤完成_技嘉 GA-B85M-D3V_主板评测-中关村在线...
  15. 【matlab】Matlab中产生正态分布随机数的函数normrnd
  16. 用U盘给macbook 安装windows系统
  17. 计算机毕业设计Java星星电影购票网站(源码+系统+mysql数据库+lw文档)
  18. 我在CSDN的2022:突破零粉丝,4个月涨粉4000+,2023年目标5万+
  19. Django2.0服务器的零基础完全部署
  20. Java、JSP电费管理系统

热门文章

  1. 【测试基础】你写过测试计划和测试报告吗?
  2. 批量生成二维码系统源码 电脑+手机自适应代码 含安装搭建教程
  3. Elasticsearch Search API说明
  4. RTB--Real TimeBidding模式的互联网广告(实时竞价的广告投放)
  5. 计算机网络基础知识 全
  6. asp.net 从服务器上下载文件
  7. 原生JS八(Math对象,随机色)
  8. 计算机二级python 知识点篇(文件和数据格式化)
  9. 无法清空剪切板,另一程序正在使用剪切板,无法复制东西了
  10. 【源码及课件分享】Java实战项目之酒店客房管理系统_Java项目开发_Java项目实战