这篇文章给大家介绍如何在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;
}
结果解析
观察抵消以及dest_file和src_file文件的大小不难看出:程序通过移动文件指针函数将src_file文件指针重新定位到文件末尾偏移(注意,本程序对抵消取了相反数,即文件末尾(-偏移量))处,然后从文件末尾抵消处开始向前复制文件到dest_file中。
关于如何在Linux操作系统操作系统中使用移动文件指针函数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。