首页
最新活动
服务器租用
香港服务器租用
台湾服务器租用
美国服务器租用
日本服务器租用
新加坡服务器租用
高防服务器
香港高防服务器
台湾高防服务器
美国高防服务器
裸金属
香港裸金属服务器
台湾裸金属服务器
美国裸金属服务器
日本裸金属服务器
新加坡裸金属服务器
云服务器
香港云服务器
台湾云服务器
美国云服务器
日本云服务器
CDN
CDN节点
CDN带宽
CDN防御
CDN定制
行业新闻
官方公告
香港服务器资讯
帮助文档
wp博客
zb博客
服务器资讯
联系我们
关于我们
机房介绍
机房托管
登入
注册
帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
联系客服
服务器资讯
/
香港服务器租用
/
香港VPS租用
/
香港云服务器
/
美国服务器租用
/
台湾服务器租用
/
日本服务器租用
/
官方公告
/
帮助文档
Linux系统调用之lseek函数
发布时间:2024-02-29 18:57:43 分类:帮助文档
Linux系统调用之lseek函数 前言 如果,想要深入的学习Linux系统调用函数lseek了话,还是需要去阅读Linux系统中的帮助文档的。 具体输入命令: man 2 lseek 即可查阅到完整的资料信息。 lseek函数 lseek函数是Linux系统API中的一员,它的官方定义是:重新定位读或写的文件偏移量。 这里科普一下什么叫做当前文件偏移量: 每当打开一个文件,都会有一个叫做“当前文件偏移量”的东西,如果难理解也可以将他理解为指针。 除非打开文件时指定O_APPEND选项,否则文件偏移量默认设置为0。当我们发生了一次读或者写操作时,都会使这个当前文件偏移量发生变化,读/写多少字节,当前偏移量就会向后移动多少。 知道了这个概念了后,我们就了解了lseek函数它有些什么作用。下面我们来细细介绍一下这个函数。 它的函数原型是长这样的: off_t lseek(int fd, off_t offset, int whence); 先来说一下这个off_t类型吧,它用于指示文件的偏移量。你可以就简单的理解为这是一个64位的整形数,相当于long long int,其定义在unistd.h头文件中可以查看。 在使用这个函数之前,我们需要往C/C++文件中导入这些头文件: #include
#include
通过lseek函数的函数原型我们可以知道,我们需要给它传入3个参数,那我们依次介绍这三个参数是什么,有什么含义在里面。 PS:题外话,如果有听不懂的地方,请自行查阅Linux帮助文档,开头有些查阅方法,一手知识永远是最好的知识。 参数:fd //文件描述符,可以通过open函数得到,通过这个fd可以操作某个文件 参数: offset //文件偏移量,是一个整形数 参数:whence //偏移类型,下列三个值中选一个。 whence : SEEK_SET:该文件的偏移量设为离文件开头offset个字节. SEEK_CUR:该文件的偏移量设为其当前值加offset(PS :offest可正负). SEEK_END:该文件的偏移量设为文件长度加offset 再来聊一下返回值: 如果成功:返回文件指针的位置 如果失败:返回-1,并将错误原因赋值给errno,我们可以用标准C库中的perror函数打印出错误原因。需要引入头文件 #include
lseek函数的作用 lseek函数的作用有以下四点: 1.移动文件指针到文件头: lseek(fd, 0, SEEK_SET); 2.获取当前文件指针的位置 lseek(fd, 0, SEEK_CUR); 3.获取文件长度 lseek(fd, 0, SEEK_END); 4.拓展文件的长度,当前文件10b, 110b, 增加了100个字节 lseek(fd, 100, SEEK_END) 注意:拓展完需要再写一次数据,否则拓展无效 光这样介绍不可能学的会,我们来通过一个实战例子来彻底了解一下这个lseek函数 实战演练:lseek函数 作用1:移动文件指针到文件头: //导入所有需要的头文件 #include
#include
#include
#include
#include
//我们的目的是:移动文件指针到文件头: int main() { //获取文件的文件描述符 int fd = open("text.txt", O_RDWR); if (fd == -1) { perror("open"); return -1; } //输出当前文件的偏移量 long long int loc = lseek(fd, 0, SEEK_CUR); printf("%lld\n", loc); //使用read函数读3个字节的数据 char buf[3] = {0}; int rnum = read(fd, buf, sizeof(buf)); printf("%d\n", rnum); //再次查看文件的偏移量 long long int loc1 = lseek(fd, 0, SEEK_CUR); printf("%lld\n", loc1); //移动文件指针到文件头 long long int loc2 = lseek(fd, 0, SEEK_SET); printf("%lld\n", loc2); return 0; } 作用2:获取当前文件指针的位置 //导入所有需要的头文件 #include
#include
#include
#include
#include
int main() { //导入所有需要的头文件 #include
#include
#include
#include
#include
int main() { //获取文件的文件描述符 int fd = open("hello.txt", O_RDWR); //输出当前文件的偏移量 long long int loc = lseek(fd, 0, SEEK_CUR); printf("%lld\n", loc); //使用read函数读2个字节的数据 char buf[2] = {0}; int rnum = read(fd, buf, sizeof(buf)); printf("%d\n", rnum); //再次查看文件的偏移量 long long int loc1 = lseek(fd, 0, SEEK_CUR); printf("%lld\n", loc1); return 0; } } 作用3:获取文件长度 //导入所有需要的头文件 #include
#include
#include
#include
#include
int main() { //获取文件的文件描述符 int fd = open("hello.txt", O_RDWR); //获取文件长度 long long int loc1 = lseek(fd, 0, SEEK_END); printf("%lld\n", loc1); return 0; } 作用4:拓展文件的长度(注:拓展完需要再写一次数据,否则拓展无效) //导入所有需要的头文件 #include
#include
#include
#include
#include
int main() { //获取文件的文件描述符 int fd = open("hello.txt", O_RDWR); //获取文件长度 long long int loc1 = lseek(fd, 0, SEEK_END); printf("%lld\n", loc1); //拓展文件的长度 long long int loc2 = lseek(fd, 100, SEEK_END); write(fd," ",1);//写入一个空数据 printf("%lld\n", loc2); return 0; } 总结 当明白了当前文件偏移量这个概念了以后,lseek函数也变的并不是那么难理解了。仔细试了一下lseek函数的功能还挺好玩的。
上一篇
江苏到日本服务器
下一篇
腾讯云香港服务器更换操作系统
相关文章
二级域名是怎么弄的
服务器上怎么找到邮箱
nginx正向代理的配置和使用
阿里云域名买完怎么用
QuantumultX 初学者傻瓜教程
幻兽帕鲁服务器多少钱?有买过的吗?
H2Miner变种,利用Redis漏洞入侵云服务器wa矿
服务器的流量用不了怎么办
linux进阶 --- chrony服务器
香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价
7*24H在线售后
高可用资源,安全稳定
1v1专属客服对接
无忧退款试用保障
德讯电讯股份有限公司
电话:00886-982-263-666
台湾总部:台北市中山区建国北路一段29号3楼
香港分公司:九龙弥敦道625号雅兰商业二期906室
服务器租用
香港服务器
日本服务器
台湾服务器
美国服务器
高防服务器购买
香港高防服务器出租
台湾高防服务器租赁
美国高防服务器DDos
云服务器
香港云服务器
台湾云服务器
美国云服务器
日本云服务器
行业新闻
香港服务器租用
服务器资讯
香港云服务器
台湾服务器租用
zblog博客
香港VPS
关于我们
机房介绍
联系我们
Copyright © 1997-2024 www.hkstack.com All rights reserved.