C++定时执行的做法
求一个C++定时执行的做法
新手一个 最近想做一个定时备份的程序 希望设置一个时间(比如2013年11月11日0:0:0),在这个时间执行备份 希望高手给一个比较详细的解答 最好能给点示例程序
------解决方案--------------------
getlocaltime取得当天时间啊 如果是你要那天就备份 检测周期可以自己设置
可以用了timer
或者类似linux的一个守护进程 没做过
等你找到确定的一天 用C++
HWND hServer=::FindWindow(NULL,"GOD");
if (NULL == hServer)
ShellExecute(NULL, "open", "GOD.exe", NULL, NULL, SW_SHOWNORMAL);
搞定
------解决方案--------------------
其他方式的没做过,在MFC中倒是做过类似的事情,可以让线程这样工作:
------解决方案--------------------
------解决方案--------------------
额外线程在作定时操作!获取当前时间 每秒一次,
当时间符合的时候,执行备份操作,其他继续循环等待!
新手一个 最近想做一个定时备份的程序 希望设置一个时间(比如2013年11月11日0:0:0),在这个时间执行备份 希望高手给一个比较详细的解答 最好能给点示例程序
C++
定时执行
定时器
------解决方案--------------------
getlocaltime取得当天时间啊 如果是你要那天就备份 检测周期可以自己设置
可以用了timer
或者类似linux的一个守护进程 没做过
等你找到确定的一天 用C++
HWND hServer=::FindWindow(NULL,"GOD");
if (NULL == hServer)
ShellExecute(NULL, "open", "GOD.exe", NULL, NULL, SW_SHOWNORMAL);
搞定
------解决方案--------------------
其他方式的没做过,在MFC中倒是做过类似的事情,可以让线程这样工作:
CEvent help;
CTime current;
while(true){
WaitForSingleObject(help, 1000); //空等待1s,不消耗CPU资源
current = CTime::GetCurrentTime();//获得当前时间
//下面是伪码
if(current no longer early than the schedule){//如果计划的时间已经到了
execute some task; //例如你想做的备份
break; //让线程自动退出
}
]
------解决方案--------------------
#include <iostream>
#include <boost/asio.hpp>
#include <boost/asio/deadline_timer.hpp>
void handler(const boost::system::error_code& ex)
{
//TODO:Backup
}
int main()
{
boost::asio::io_service io_service;
boost::asio::deadline_timer tm(io_service,boost::posix_time::seconds(5));
tm.async_wait(handler);
io_service.run();
return 0;
}
------解决方案--------------------
额外线程在作定时操作!获取当前时间 每秒一次,
当时间符合的时候,执行备份操作,其他继续循环等待!