【问题标题】:How to call a particular function in a C program periodically via cronjob scheduling?如何通过 cronjob 调度定期调用 C 程序中的特定函数?
【发布时间】:2021-09-18 17:45:15
【问题描述】:
    #include <stdio.h>
    #include <var.h>
    
    void checksumrefresh(void)
    {
        a + b = s;
        printf("%d\n",s);
    }

我知道通过 cronjob 调度定期调用程序

20 * * * */home/users/Desktop/prog.out

但是在上面的程序中,如何通过cornjob调度每30分钟调用一次checksumrefresh()函数。

P.S: main() 在另一个文件上。 任何人都请帮助我,因为我是玉米作业调度的新手

【问题讨论】:

  • 在主程序中调用 sum。 main 在你启动程序时被调用。
  • @MajidHajibaba:但我的要求是从 cronjob 调度中调用函数
  • 不使用 main 就不能在 C 中调用函数。
  • Crond 对函数一无所知。它只调用程序。要么让这个函数成为一个独立的程序,要么在现有的 main() 中添加一个命令行选项来执行这个函数并退出。附言我知道这只是一个示例,但您最好输入有意义的代码(或至少一个可以编译的代码)...
  • 您可以使用 CRON 运行一个程序(例如 kill),该程序向您的程序发送信号(例如 USR1),然后从信号处理程序中调用该函数。

标签: c linux visual-studio ubuntu job-scheduling


【解决方案1】:

crond 不知道在您的程序中从哪里开始,因为它不是真正的程序(读取可执行文件)。要使其成为可执行文件,您应该在具有(至少)原型int main(); 的函数中调用您的函数,或者您应该将代码放在该主函数中。

选项 1

#include <stdio.h>
#include <var.h>
    
void checksumrefresh(void)
{
    a + b = s;
    printf("%d\n",s);
}

int main()
{
    checksumrefresh();
}

选项 2

#include <stdio.h>
#include <var.h>
    
int main()
{
    a + b = s;
    printf("%d\n",s);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 2020-09-21
    • 1970-01-01
    相关资源
    最近更新 更多