用lseek函数来获取文件大小

最近复习网络编程相关的知识点。

遇见了lseek。

一、获取文件大小

 

 /*测得文件大小*/

  1. int filelen;

  2. int fd;

  3. int filelen= lseek(fd,0L,SEEK_END);

  4. lseek(fd,0L,SEEK_SET);

  5. printf("file size is %d\n",filelen);

二、lseek使用说明

表头文件
#include<sys/types.h>
#include<unistd.h>


定义函数
off_t lseek(int filde,off_t offset ,int whence);

 

 

EEK_SET 将读写位置指向文件头后再增加offset个位移量。

SEEK_CUR 以目前的读写位置往后增加offset个位移量。

SEEK_END 将读写位置指向文件尾后再增加offset个位移量。

当whence 值为SEEK_CUR 或SEEK_END时,参数offet允许负值的出现。

下列是较特别的使用方式:

1) 欲将读写位置移到文件开头时:

lseek(int fildes,0,SEEK_SET);

2) 欲将读写位置移到文件尾时:

lseek(int fildes,0,SEEK_END);

3) 想要取得目前文件位置时:

lseek(int fildes,0,SEEK_CUR);

 

 

返回值:
当调用成功时则返回目前的读写位置,也就是距离文件开头多少个字节。若有错误则返回-1,errno 会存放错误代码。
可能设置erron的错误代码:
EBADF: fildes不是一个打开的文件描述符。
ESPIPE:文件描述符被分配到一个管道、套接字或FIFO。
EINVAL:whence取值不当。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值