<span style="font-size:14px;color:#006600;">
int read_tail_line(FILE *fd,char *buf){ //从后往前一行一行的读取
int c,ret;
long offset;
if(ftell(fd)==0){
return -1;
}
while(1){
c=fgetc(fd);
if(c=='\n'){
offset=ftell(fd);
if(buf){
fgets(buf,LINE_BUF_SIZE,fd);
}
fseek(fd,offset-2,SEEK_SET);
ret=1;
break;
}else if(fseek(fd,-2,SEEK_CUR)==-1){
fseek(fd,0,SEEK_SET);
if(buf){
fgets(buf,LINE_BUF_SIZE,fd);
}
<span style="white-space:pre"> </span>fseek(fd,0,SEEK_SET);
ret=0;
break;
}
}
return ret;
}
int read_tail(int index,int num){ //从文件末尾第index行开始,向上读取num行
int ret=0;
FILE*fd;
int i=0;
char buf[512]={0};
fd=fopen(LOG_FILE,"rb"); //open file
fseek(fd,-1,SEEK_END);
i=index;
while(i){
readline(fd,NULL);
i--;
}
i=num;
while(i){
memset(buf,0,LINE_BUF_SIZE);
ret=readline(fd,buf);
printf("%s",buf);
i--;
if(!ret)
break;
}
printf("retcode:%d\n",num-i);
fclose(fd);
return 0;
}
</span>