一、獲取檔案大小
/*測得檔案大小*/
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 將讀...