我想在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循环下面的行。
如何通过定期调用上述函数来实现,而不影响程序其他部分的执行?
你正在寻找一个多线程系统。你必须创建一个任务来执行上述的while循环,另一个任务来执行当前程序的其他部分。
你要用多线程来完成这个任务,这本身就是一个很大的话题。我建议在学习之前先研究一下POSIX线程(pthreads)的工作原理。
在Windows中,这意味着线程应该等待一个自定义事件 "关闭线程 "5000ms。如果你得到这个事件,就停止线程。否则在超时的情况下,执行定期任务。Windows使用的线程API与POSIX不同。
也是不同的 Sleep(ms)
(Windows)与 sleep(s)
(POSIX)功能...