繁体   English   中英

在 C 中定期调用 function

[英]Calling a function periodically in C

我想调用一个 function,它在 C 中每 5 秒定期创建文件。 下面是创建文件的 function 代码。

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 秒从主 function 定期调用上述 function

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

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

如何通过定期调用上面的 function 来实现这一点,而不需要执行程序的 rest?

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

您可以使用多线程来执行此操作,这本身就是一个很大的话题。 我建议先研究 POSIX 线程 (pthreads) 如何工作。

在 Windows 中,这意味着线程应该等待自定义事件“关闭线程”5000 毫秒。 如果您收到事件,请停止线程。 否则在超时的情况下,执行周期性任务。 Windows 使用与 POSIX 不同的线程 API。

还有不同的Sleep(ms) (Windows) vs sleep(s) (POSIX) 功能......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM