如何在Linux中使用lseek函数

2022年 10月 17日 发表评论
腾讯云正在大促:点击直达 阿里云超级红包:点击领取
免费/便宜/高性价比服务器汇总入口(已更新):点击这里了解

这篇文章给大家介绍如何在Linux操作系统操作系统中使用移动文件指针函数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

移动文件指针函数的作用是用来重新定位文件读写的位移。

头文件以及函数声明

#包括ys/类型。h

# includeunistd.h

off_tlseek(intfd,off_toffset,int wharth);抵消为正则向文件末尾移动(向前移),为负数则向文件头部(向后移)。

描述

lseek()根据指令将与文件描述符软驱相关联的打开文件描述的文件偏移量重新定位到参数偏移量,如下所示3360

文件偏移量被设置为偏移字节。

文件偏移量被设置为其当前位置加上偏移量字节。

文件偏移量被设置为文件加上偏移量字节的大小。

lseek()允许将文件偏移量设置在文件末尾之外(但这不会改变文件的大小)。如果稍后在此点写入数据,对间隙("孔")中数据的后续读取将返回空字节(""),直到数据实际写入间隙。

lseek()函数会重新定位被打开文件的位移量,根据参数抵消以及从何处的组合来决定:

SEEK_SET:

从文件头部开始偏移抵消个字节。

SEEK_CUR:

从文件当前读写的指针位置开始,增加抵消个字节的偏移量。

搜索结束:

文件偏移量设置为文件的大小加上偏移量字节。

测试代码:

# includeunistd.h

#包括ys/类型。h

#includesys/stat.h

# includefcntl.h

# includestdlib.h

# includestdio.h

#defineBUFFER_SIZE1024

#defineSRC_FILE_NAME'src_file '

#定义目标文件名称'目标文件'

//根据传入的参数来设置抵消

# define offset(atoi(args[1])

intmain(intargc,char*args[]){

intsrc_file,dest _ file

unsignedcharbuff[BUFFER _ SIZE];

intreal _ read _ len,offset

if(argc!=2){

fprintf(stderr,“用法:%偏移量 n”,参数[0]);

出口(-1);

}

src_file=open(SRC_FILE_NAME,O _ RDONLY);

dest_file=open(DEST_FILE_NAME,O_WRONLY|O_CREAT,S _ IREAD | S _ IWRITE);//所有者权限:rw

if(src_file0||dest_file0){

fprintf(stderr,' Openfileerror! n ');

出口(1);

}

off_set=lseek(src_file,-OFFSET,SEEK _ END);//注意,这里对抵消取了相反数

printf(' lseek()。respisitontfileoffsetofsrc _ file :% d n ',off _ set);

while((real _ read _ len=read(src _ file,buff,sizeof(buff)))0){

write(dest_file,buff,real _ read _ len);

}

关闭(dest _ file);

关闭(src _ file);

返回0;

}如何在Linux中使用lseek函数

结果解析

观察抵消以及dest_file和src_file文件的大小不难看出:程序通过移动文件指针函数将src_file文件指针重新定位到文件末尾偏移(注意,本程序对抵消取了相反数,即文件末尾(-偏移量))处,然后从文件末尾抵消处开始向前复制文件到dest_file中。

关于如何在Linux操作系统操作系统中使用移动文件指针函数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

腾讯云正在大促:点击 https://2bcd.com/go/tx/进入最新活动页】领取无门槛代金券,附云服务器价格表,2核2G4M轻量应用服务器99元1年,新老用户都可以买,可以享受1次续费99元一年、135元15个月、三年560元,MySQL云数据库59元1年起,2核2G3M配置82元1年,2核4G5M配置188元一年、3年900元,4核8G12M轻量服务器880元15个月,8核16G配置1890元15个月,更多16核32G28M带宽和云服务器CVM标准型S5、GPU服务器、CVM标准型SA2租用优惠价格如下,可以 点此进入最新活动页 查看当前最新的优惠券和活动信息。还可以领下10元无门槛代金券:点此直达 阿里云限量超级红包:点击领取】5亿上云补贴和2088元满减代金券,阿里云服务器租用费用最新价格表【点击了解】,最便宜轻量应用服务器2核2G3M带宽82元1年,ECS云服务器2核2G3M带宽99元一年,ECS u1实例2核4G5M带宽优惠价格199元一年,香港30M带宽轻量服务器24元1个月、288元一年,4核8G服务器706元一年,ECS云服务器4核16G10M带宽30元1个月、90元3个月,云服务器8核32G10M带宽109元1个月、327元3个月。阿里云产品最高降价55%,点击 https://2bcd.com/go/aliyun/ 进入最新活动页了解。 腾讯云续费贵,一次性买3年/5年,免得续费贵。3年轻量 2核2G 4M 560元;3年轻量 2核4G 5M 3年900元,活动入口:点击前往(下拉到“爆品专区”即可看到)。 老用户享新人优惠的方法:用Qq登录、1人可注册3个新账号/用家人朋友的身份注册新号(点击注册新账号)。
小咸鱼

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: