公司有个嵌入式低功耗项目,项目需求中有一项是仿照Linux cron task的定时设置,作为设备定时唤醒时间。于是就自己琢磨写了C语言的Crontab表达式执行时间,各种调试结果与crontab执行时间在线工具一致。用到了基姆拉尔森计算公式计算星期,Linux源码中的Crond.c文件的ParseField函数。希望能对同行有帮助。
crontab表达式的知识请自行百度。
先讲讲实现思路:
1、参考Linux源码中的Crond.c文件的static char *ParseField(char *user, char *ary, int modvalue, int off,const char *const *names, char *ptr);函数,将crontab表达式解析成结构体CronLine中的分钟数组,小时数组,日期数组,月份数组和星期数组,并对其对应项赋值为1.
typedef struct CronLine
{
char cl_Mins[60]; /* 0-59 */
char cl_Hrs[24]; /* 0-23 */
char cl_Days[32]; /* 0-31 */
char cl_Mons[12]; /* 0-11 */
char cl_Dow[7]; /* 0-6, beginning sunday */
} CronLine;
static char *ParseField(char *user, char *ary, int modvalue, int off,const char *const *names, cha