Linux文件编程常用函数详解——lseek()函数

2023-11-18

lseek()函数的头文件和形式:

#include <sys/types.h>
#include <unistd.h>
off_t lseek(int filedes, off_t offset, int whence) ;

lseek()函数的说明:

打开的每个文件都有一个与其相关联的“当前文件位移量”。它是一个非负的整数,用以度量从文件开始处计算的字节数。
通常,读、写操作都从当前文件位移量处开始,并使位移量增加所读或写的字节数。按系统默认,当打开一个文件时,
除非指定O_A P P E N D选择项,否则该位移量被设置为0。

lessk()函数的参数说明:

第一个参数是文件描述符;第二个参数是偏移量,int型的数,正数是向后偏移,负数向前偏移;第三个参数是有三个选项:
1.SEEK_SET:将文件指针偏移到传入字节数处(文件头开始偏移)
2.SEEK_CUR:将文件指针偏移到当前位置加上传入字节数处;((当前位置开始偏移)
3.SEEK_END:将文件指针偏移到文件末尾加上传入字节数处(作为拓展作用,必须再执行一次写操作)

实例代码

#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>

/*用lseek函数拓展文件*/
/*int main(){
	int fd, ret;

	//打开文件夹
	fd = open("example.text", O_RDWR);
	if(fd == -1){
		perror("open");
		exit(1);
	}

	//查看文件当前的大小
	ret = lseek(fd, 0, SEEK_END);
	printf("file value = %d\n", ret);

	//文件拓展1000字节
	ret = lseek(fd, 1000, SEEK_END);
	printf("return value = %d\n", ret);

	//实现文件拓展,必须再执行一次写操作
	write(fd, "hello", 6);

	close(fd);

	return 0;
}*/

//将已存在的文件按相反顺序拷贝到另一个文件中
int main(){
	int fd1, fd2;
	char ch;

	//打开已存在文件和新建文件
	fd1 = open("a.txt", O_RDONLY);
	fd2 = open("b.txt", O_WRONLY | O_CREAT | O_TRUNC, 0777);

	lseek(fd1, -1, SEEK_END);//将文件位移量偏移到最后一个字符前
	read(fd1, &ch, 1);
	write(fd2, &ch, 1);

	//循环读取和写入
	while(lseek(fd1, -2, SEEK_CUR) != -1){
		read(fd1, &ch, 1);
		write(fd2, &ch, 1);
	}

	close(fd1);
	close(fd2);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux文件编程常用函数详解——lseek()函数 的相关文章

  • Unix环境编程中的apue.h和err_quit、err_sys问题

    现在开始学习 Unix环境编程 这本书 在学习的时候总会遇到书中的程序编译时会出现问题 所以自己将遇到的问题及解决的方法进行总结 找不到头文件apue h和err qiut err sys 1 apue h是作者自定义的一个头文件 并不是U
  • 关于pthread_rwlock_t读写锁产生死锁的情况

    对于pthread rwlock t读写锁 一个线程持有着写锁 又去加 该锁的 读锁 可能会产生死锁 一个线程持有着 读或者写 锁 又去加 该锁的 写锁 可能会产生死锁 此时pthread rwlock rdlock和pthread rwl
  • gdb调试正在运行的进程

    http elisawell blog 163 com blog static 171462881201223061149953 有时会遇到一种很特殊的调试需求 对当前正在运行的其它进程进行调试 正是我今天遇到的情形 这种情况有可能发生在那
  • Linux系统中关闭看门狗的指令

    1 echo V gt dev watchdog 关掉看门狗
  • Linux中修改MAC地址和IP地址的命令(netset、ip、ifconfig)

    修改MAC地址 ip link set eth0 address aa aa aa aa aa aa 解析 eth0是网卡的名字 可以用ifconfig命令查看 aa aa aa aa aa aa是想要修改后的MAC地址 修改IP地址 1
  • linux stat函数讲解

    原文地址 http www cnblogs com hnrainll archive 2011 05 11 2043361 html 表头文件 include
  • Linux中确认两份文件内容是否相同的方法:MD5值

    什么是MD5值 MD5 信息摘要算法 一种被广泛使用的密码散列函数 可以产生出一个128位 16字节 的散列值 hash value 用于确保信息传输完整一致 可以说是文件的唯一ID 可以根据MD5值去判断文件是否完整或者两个文件是否完全一
  • cd命令、pwd命令和环境变量PWD、OLDPWD的关联

    1 cd命令 cd命令这里不多介绍 cd 命令是返回上次所在的目录 2 PWD和OLDPWD环境变量 dai ubuntu env PWD home dai OLDPWD dai ubuntu 3 关联 1 当你输入 cd 命令返回上次的目
  • 使用Crash工具分析 Linux dump文件

    前言 Linux 内核 以下简称内核 是一个不与特定进程相关的功能集合 内核的代码很难轻易的在调试器中执行和跟踪 开发者认为 内核如果发生了错误 就不应该继续运 行 因此内核发生错误时 它的行为通常被设定为系统崩溃 机器重启 基于动态存储器
  • Linux进程编程常用函数详解——vfork()和exec()函数

    vfork 函数原型
  • CentOS 7升级gcc/CentOS 7 yum 安装gcc

    centos7自带的gcc版本是4 8 手动升级安装很锻炼 毕竟已经0202年了 devtoolset 7 Developer Toolset is designed for developers working on CentOS or
  • Richard Stevens的几本书

    版权声明 转载时请以超链接形式标明文章原始出处和作者信息及本声明 http stevens0102 blogbus com logs 37223648 html 博客名取为 纪念Richard Stevens 居然没有写几篇与Stevens
  • 学习linux内核的经典书籍介绍

    有关内核的书籍可以用汗牛充栋来形容 不过只有一些经典的神作经住了考验 首先是5本久经考验的神作 个人概括为 2 1 2 第一个2是指2本全面讲解内核的书 中间的1指1本讲解驱动开发的书 后面的2则指2本有关内核具体子系统的书 你是否想到了某
  • gethostbyname() -- 用域名或主机名获取IP地址

    http hi baidu com zengzhaonong item 87d9d296d0824cbb82d29570 include
  • slect( )、poll( )、epoll( )函数详解

    1 slect 函数 1 1 函数原型 include
  • popen 使用方法

    popen 可以执行shell命令 并读取此命令的返回值 popen 函数通过创建一个管道 调用fork 产生一个子进程 执行一个shell以运行命令来开启一个进程 可以通过这个管道执行标准输入输出操作 这个管道必须由pclose 函数关闭
  • GDB调试子进程

    http blog sina com cn s blog 4e415c0b0100lum0 html 1 set follow fork mode
  • read和write函数

    read ssize t read int fd void buf size t count fd 文件描述符 通过open获得 buf 需要读取的数据的存放位置 数组的地址 count 指定数组的大小 返回值 成功 gt 0 返回实际读取
  • gcc搜索动态链接库的路径优先级排序

    GCC运行时 Linux动态链接库的搜索路径按优先级排序为 1 编译目标代码时 Wl rpath 指定的动态库搜索路径 当指定多个动态库搜索路径时 路径之间用冒号 分隔 2 环境变量 LD LIBRARY PATH 指定的动态库搜索路径 3
  • lseek() 的复杂度是 O(1) 吗?

    我知道我的问题在这里有答案 QFile 寻道性能 https stackoverflow com questions 6171403 qfile seek performance 但我对这个答案并不完全满意 即使在查看了以下实现之后gene

随机推荐

  • warning: function declared implicitly错误原因

    http blog sina com cn s blog 629f56a70100irbn html line 10 warning function declared implicitly 这是由于没有声明函数原型造成的 在a c中 vo
  • Vue插件

    目录 vue项目目录结构 es6导入导出语法 Vue项目开发规范单页面组件写法 vue项目集成axios vue项目前后端打通 前后端交互之登录功能 props配置项 父组件通过自定义属性与子组件通信 混入 插件 scoped样式 loca
  • c语言socket如何传输图片,socket文件传输功能的实现

    这节我们来完成 socket 文件传输程序 这是一个非常实用的例子 要实现的功能为 client 从 server 下载一个文件并保存到本地 编写这个程序需要注意两个问题 1 文件大小不确定 有可能比缓冲区大很多 调用一次 write se
  • 如何理解面向过程和面向对象?

    一句话理解面向对象 有人说 如果上帝是程序员 他怎么创造世界上的所有动物 理解这个问题就理解了面向对像 面向过程和面向对象区别 面向过程的思路 什么事都自己做 分析解决问题所需的步骤 用函数把这些步骤依次实现 面向对象的思路 什么事都指挥对
  • 可连接点对象及示例(二)

    转载请标明是引用于 http blog csdn net chenyujing1234 例子代码 包括客户端与服务端 http www rayfile com zh cn files de82908f 7309 11e1 9db1 0015
  • 域名怎么解析到服务器上

    今天无事说一说如何把自己的域名解析绑定到自己的服务器上 让访客们可以通过你的域名来访问你的网站 域名解析定义 域名解析是把域名指向网站空间IP 让人们通过注册的域名可以方便地访问到网站的一种服务 IP地址是网络上标识站点的数字地址 为了方便
  • pytorch 中 多头注意力机制 MultiHeadAttention的代码实现及应用

    本文将对 Scaled Dot Product Attention Multi head attention Self attention Transformer等概念做一个简要介绍和区分 最后对通用的 Multi head attenti
  • klocwork 2020.3安装使用过程

    klocwork 2020 3 1 安装过程略过 可查看2019的安装过程 2 web分析 存在漏报的问题 可能是规则选择不全 3 desktop分析 4 嵌入式环境插件分析 e mail lu1024lu foxmail com
  • 软件著作权申请注意事项——常见问题[详细版,不断补充中]

    近期在申请几个软著 查询了大量资料 打了很多电话 经过几次 亲身尝试后 总结出了以下要点问题 基本涵盖了目前网上搜不到的一些注意事项 如有问题欢迎在评论中一起讨论 2020年8月上线了新系统 本说明进行了相应调整 请先阅读 0 新系统计算机
  • 开源库jemalloc简介

    jemalloc是通用的malloc 3 实现 它强调避免碎片和可扩展的并发支持 它的源码位于https github com jemalloc jemalloc 最新稳定版本为5 2 1 glibc的内存分配算法是基于dlmalloc实现
  • Two Arithmetic Progressions

    Two Arithmetic Progressions 题目链接 题意 思路 AC代码1 include
  • .NET Core + K8S 玩转容器编排

    Production Grade Container Orchestration Automated container deployment scaling and management 生产级别的容器编排系统 自动化的容器部署 扩展和管
  • RTMP协议与RTSP协议比较

    考虑做一个手机直播系统 首先需要指定一个合理的技术方案 由于自己以前不是搞多媒体这块 对流媒体开发不熟悉 自己的理解思维总习惯用java web开发的惯性走 先指定一个大体的框架 不管对还是错 先考虑其技术可行性 框架的指定 首先取决于自己
  • 代码走查——项目走向成功的锦囊之一

    说起代码走查 相信每个人都不陌生 但为什么要执行代码走查 什么时候来执行代码走查 如何有效执行代码走查 很多人的看法和见解都不一样 一般的看法 认为代码走查是一种非正式的代码评审技术 它通常在编码完成之后由代码的作者向一组同事来讲解他自己编
  • mysql5.7防火墙_mysql 5.7.13 winx64安装配置方法图文教程(win10)

    本文实例为大家分享了mysql 5 7 13 winx64安装配置方法图文教程 供大家参考 具体内容如下 下载 安装 1 解压下载好的mysql 5 7 13 winx64 zip到你需要安转的目录 eg D mysql 2 配置解压目录下
  • openwrt用git https错误:fatal unable to find remote helper for ‘https‘

    opkg update opkg remove git opkg install git http opkg install ca bundle
  • java连接多个mysql_java – MySql连接太多了

    使用您的方法 如果在调用conn close 之前抛出任何异常 则永远不会关闭连接 您需要在try块中获取它 以及语句和结果集 并在finally块中将其关闭 无论是否抛出异常 都将始终执行finally中的任何代码 有了这个 您可以确保关
  • 使用React实现时间的天数,小时数,分钟数之间的自动转化

    由于公司项目需要使用React实现时间的天数 小时数 分钟数之间的自动转化 在遇了很多坑后终于解决了问题 需要实现的功能 当用户在输入小时数的时候 超过24小时就自动转化为相应的天数 当用户在输入分钟数的时候 超过60分钟以上就要自动转化成
  • 深度学习-算法篇

    机器学习 学而不思 深度学习 反省自查 卷积神经网络 CNN CNN 的价值 1 能够将大数据量的图片有效的降维成小数据量 并不影响结果 2 能够保留图片的特征 类似人类的视觉原理 CNN 的基本原理 1 卷积层 主要作用是保留图片的特征
  • Linux文件编程常用函数详解——lseek()函数

    lseek 函数的头文件和形式 include