char strcmd[256] = {0};
snprintf(strcmd,sizeof(strcmd)-1, "ls -l %s",m_logpath);
FILE *pf = popen(strcmd,"r");
if( NULL == pf)
{
ERROR("NULL == pf\n");
return ;
}
char str[1024]={0};
int count = fread(str,1,sizeof(str)-1,pf);
//文件不存在
if(0 == count)
{
getLock();
if(NULL != pfp)
{
fflush(pfp);
pfp = NULL;
}
releaseLock();
}
else
{
char *psubstr = strtok(str," ");
int columns = 0;
while(NULL != psubstr)
{ columns++;
if(5 == columns)//第5列是文件的大小
{
long filesize = atol(psubstr);
// 日誌已經達到最大值。
if (LHUConfig::GetConfigNumValue(LOGFILE_MAX_SIZE) < filesize)
{
char baklogpath[256]= {0};
strncpy(baklogpath,m_logpath,strlen(m_logpath)-4);
snprintf(strcmd,sizeof(strcmd)-1, "mv %s %s_%s.log",m_logpath,baklogpath,CURTIME);//CURTIME
getLock();
if(NULL != pfp)
{
fflush(pfp);
int ret = system(strcmd);
if (0 != ret)
{
releaseLock();
ERROR("exec %s error[%d] ! \n ",strcmd,ret);
return;
}
fclose(pfp);
pfp = NULL;
}
releaseLock();
}
break;
}
psubstr = strtok(NULL," ");
}
}