您的位置:首页 > 运维架构 > Linux

linux 执行命令行,获取结果

2011-09-26 09:45 399 查看
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," ");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: