V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
monkeyNik
V2EX  ›  C

开源 C 语言库 Melon: Cron 格式解析

  •  
  •   monkeyNik · 2023-01-24 19:22:56 +08:00 · 1111 次点击
    这是一个创建于 700 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本文介绍开源 C 语言库 Melon 的 cron 格式解析。

    关于 Melon 库,这是一个开源的 C 语言库,它具有:开箱即用、无第三方依赖、安装部署简单、中英文文档齐全等优势。

    Github repo

    简介

    cron 也就是我们常说的 Crontab 中的时间格式,格式如下:

    *  *  *  *  *
    分 时 日  月 周
    

    例如:

    30 21 * * * 
    

    表示:每晚的 21:30

    使用

    Melon 中 cron 格式解析器会将上述格式解析成一个time_t类型值。使用代码如下:

    #include "mln_cron.h"
    #include <stdio.h>
    
    int main(void)
    {
        char p[] = "* * * * *;
        mln_string_t s;
        mln_string_nset(&s, p, sizeof(p)-1);
        time_t now = time(NULL);
        time_t next = mln_cron_parse(&s, now);
        printf("%lu %lu %s\n", (unsigned long)now, (unsigned long)next, ctime(&next));
        return 0;
    }
    

    可以看到,本例中,cron 格式为* * * * *,含义即是每分钟。

    程序流程大致:

    1. 初始化格式字符串
    2. 获取当前系统秒值
    3. 将当前秒值作为参考基数,来计算该 cron 格式的秒级时间戳,即下一秒的时间值
    4. 输出 cron 解析器返回的秒值及其格式化字符串内容

    Melon 中 cron 解析器在mln_cron.h中,使用时需要include进来。

    另外需注意,在 Melon 中,cron 暂时不支持-表示范围值。

    结语

    cron 格式解析目前能支持的格式是 crontab 的一个子集,后续随着使用需求可能会再进行扩展。

    另外,欢迎各位对 Melon 感兴趣的读者访问其Github 仓库

    感谢阅读!

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5323 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 07:36 · PVG 15:36 · LAX 23:36 · JFK 02:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.