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

遇见了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取值不当。

 

用lseek函数来获取文件大小

相关文章:

  • 2022-02-10
  • 2021-09-23
  • 2021-08-09
  • 2021-12-22
  • 2021-08-20
  • 2021-11-07
  • 2021-08-20
猜你喜欢
  • 2021-10-19
  • 2021-07-05
  • 2021-09-04
  • 2021-12-08
  • 2021-08-12
  • 2021-09-22
  • 2021-10-08
相关资源
相似解决方案