定期调用C语言中的函数

问题描述 投票:0回答:1

我想在C语言中调用一个每5秒周期性创建文件的函数。

void file_create(int time) {
        snprintf(filename, sizeof(filename),"%s_%d", "data", index);
        FILE *fp = fopen (filename, "w");
        index++;
}

文件名为data_0, data_1, data_2,并在每次调用时进行。

如果像下面这样无限循环,如何从主函数中每5秒周期性地调用上述函数?

while(1){
    file_create();
    Sleep(5000);
}

这不允许执行while循环下面的行。

如何通过定期调用上述函数来实现,而不影响程序其他部分的执行?

c loops sleep periodic-task
1个回答
0
投票

你正在寻找一个多线程系统。你必须创建一个任务来执行上述的while循环,另一个任务来执行当前程序的其他部分。


0
投票

你要用多线程来完成这个任务,这本身就是一个很大的话题。我建议在学习之前先研究一下POSIX线程(pthreads)的工作原理。

在Windows中,这意味着线程应该等待一个自定义事件 "关闭线程 "5000ms。如果你得到这个事件,就停止线程。否则在超时的情况下,执行定期任务。Windows使用的线程API与POSIX不同。

也是不同的 Sleep(ms) (Windows)与 sleep(s) (POSIX)功能...

© www.soinside.com 2019 - 2024. All rights reserved.