C语言实现类似定时任务的功能
本文最后更新于 2023-07-07,文章内容可能已经过时。
while死循环,并在里面加上sleep(1)就能实现每循环一次花费一秒
在循环里面获取时间戳,以分钟或小时的秒数取模来判断是否到想要的时间然后再执行操作
例:
实现每小时最后半分钟发送日志功能:
#include <time.h>
int main(int argc, char** argv)
{
int count = 0;
while(1)
{
// 每过27秒判断一次时间,根据观察此处每次最多有三秒延时所以27秒判断一次
if (count % 27 == 1)
{
struct timeval tv;
gettimeofday(&tv, NULL);
// 根据秒数控制,五十九分三十秒到六十分之间执行
if(tv.tv_sec % 3600 >= 3570)
{
// example:
// char current_time[20] = {0};
// char cmd[30] = {0};
// struct tm *now;
// now = localtime(&tv.tv_sec);
// strftime(current_time, sizeof(current_time), "_%Y-%m-%d-%H_", now);
// sprintf(cmd, "upload_log %s", current_time);
// w_system(cmd);
}
}
sleep(1);
count++;
}
}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 周日
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果