首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++实现定时更名,但是名字改了,服务器还是对那个文件进行操作,迷惑了

2013-11-20 
C++实现定时改名,但是名字改了,服务器还是对那个文件进行操作,迷惑了我的apache服务器上有一个日志文件acc

C++实现定时改名,但是名字改了,服务器还是对那个文件进行操作,迷惑了
    我的apache服务器上有一个日志文件access.log,为了避免它过大,我写了一个自动改文件名的控制台程序,每到0点的时候就将它命名为"日期 access.log",我本以为服务器会重新创建一个access.log文件进行操作,可没想到服务器竟然继续对"日期 access.log"进行操作.
    我不知道服务器怎么写的,其实这个功能完全可以服务器来实现吧?可是头就让我做个小程序自动改...郁闷了..看看代码如下,用的rename()改的文件名,是不是rename()的问题?
    我现在想换个思路,就是0点的时候把access.log的内容都copy到"日期 access.log"文件中,但是怕占用权限出问题.还有就是,如果没有占用权限问题,那么服务器往里面写数据,我往外面拿,容易出现死循环吧..
    大伙有没有好想法,跪求啊~C++实现定时更名,但是名字改了,服务器还是对那个文件进行操作,迷惑了


while(1)
{
        time_t timeNow = time(0);   //获取当前时间
tm tim = *localtime(&timeNow);    //转换为tim格式
int iYear =tim.tm_year+1900;   //年
int iMonth=tim.tm_mon+1;    //月
int iDay = tim.tm_mday;    //日
int iHour = tim.tm_hour;    //小时          (timeNow%(3600*24)/3600+8)%24;
int iMinute = tim.tm_min;    //分钟         (timeNow%3600)/60;
int iSecond = tim.tm_sec;   //秒           timeNow%60;
char date[20];
_snprintf(date, sizeof(date), "%04d-%02d-%02d", iYear, iMonth, iDay);    //将日期转换成字符串
_snprintf(date+10, sizeof(date), "%c%c%c%c%c%c%c%c%c%c%c", ' ' ,'a','c','c','e','s','s','.','l','o','g');    //添加access.log文件名
if((iHour>1) & (iHour<22))   //若当前的小时在1-22之间,暂停1小时
{
Sleep(3600000);
}
else
{
if((iHour == 0) && (iMinute == 0) && (iSecond == 0))
{
rename("access.log", date);    //修改文件名
cout<<date<<" 修改Log文件名"<<endl;    //输出修改信息
}
Sleep(1000);    //暂停1秒
}
}
C++ Rename. 文件操作 服务器
[解决办法]
不用自己写程序。apache有logrotate功能
http://httpd.apache.org/docs/2.2/logs.html
[解决办法]
改名只是改名而已,没有改内容

热点排行