linux 使用lseek函式來獲取檔案大小

2021-08-03 12:37:39 字數 1543 閱讀 6416

一、獲取檔案大小

/*測得檔案大小*/  

int filelen;

int fd;

int filelen= lseek(fd,0l,seek_end);  

lseek(fd,0l,seek_set);

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

二、lseek使用說明

表頭檔案

#include

#include

定義函式

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取值不當。

**列子:

#define buffer_size 1024

int main(int argc,char **argv)

/*建立目的檔案*/

if((writefd=open("dest.txt", o_wronly|o_creat)) == -1)

/*測得檔案大小*/

filelen= lseek(readfd,0l,seek_end);

lseek(readfd,0l,seek_set);

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

/*進行檔案拷貝*/

while(ret)

write(writefd, buffer, ret);

filelen-=ret;

bzero(buffer,buffer_size);

}

close(readfd);

close(writefd);

exit(0);

}

linux 使用lseek函式來獲取檔案大小

一 獲取檔案大小 測得檔案大小 int filelen int fd int filelen lseek fd,0l,seek end lseek fd,0l,seek set printf file size is d n filelen 二 lseek使用說明 表頭檔案 include incl...

用lseek函式來獲取檔案大小

最近複習網路程式設計相關的知識點。遇見了lseek。一 獲取檔案大小 測得檔案大小 int filelen int fd int filelen lseek fd,0l,seek end lseek fd,0l,seek set printf file size is d n filelen 二 l...

linux下 lseek函式用法

lseek函式 用法 表頭檔案 include include 定義函式 off t lseek int fildes,off t offset,int whence seek set 引數offset即為新的讀寫位置 seek cur 當前讀寫位置後增加offset個位移量。seek end 將讀...