用C++写一个定时器线程,每小时触发一次,创建时间文件夹,文件夹名称年月日时
时间: 2024-03-08 18:46:57 浏览: 77
可以在上面的定时器线程的基础上,加入创建时间文件夹的代码。具体实现方法如下:
```cpp
#include <iostream>
#include <thread>
#include <chrono>
#include <ctime>
#include <string>
#include <sys/stat.h>
using namespace std;
// 获取当前时间,返回格式为年月日时的字符串
string get_current_time()
{
time_t t = time(nullptr);
struct tm *now = localtime(&t);
char buf[80];
strftime(buf, sizeof(buf), "%Y%m%d%H", now);
return buf;
}
void timer_thread()
{
while (true)
{
// 等待1小时
this_thread::sleep_for(chrono::hours(1));
// 获取当前时间
string time_str = get_current_time();
// 创建时间文件夹
string folder_name = time_str + "/";
mkdir(folder_name.c_str(), 0777);
// 输出日志
cout << "Folder " << folder_name << " created." << endl;
}
}
int main()
{
// 创建定时器线程
thread t(timer_thread);
// 等待线程结束
t.join();
return 0;
}
```
上述代码中,get_current_time()函数用于获取当前时间,并返回格式为年月日时的字符串。在timer_thread()函数中,先等待1小时,然后获取当前时间,创建时间文件夹,并输出日志。在main()函数中,创建了定时器线程t,并等待线程结束。