c - 如何让我的程序在每个给定时间(例如 1/s)只迭代一次?
问题描述
假设我有一个 for 循环,它从 .txt 文件中逐行读取指令,而我希望做的是让程序每秒左右执行一次这些指令。我怎么可能做到这一点?
这是我的循环的代码:
for(j = 0; j < PC; j++) {
txtfilepointer = fopen(listWithTxtFilesToRead[j].name, "r");
while (fscanf(txtfilepointer, "%c %s", &field1, field2) != EOF ) {
// here it should be executing the given instruction every second or so...
printf("whatever the instruction told me to do");
}
}
请忽略变量名,这只是为了举例说明。
解决方案
让程序每秒左右执行一次这些指令
让它等到所需的时间过去。
假设你想让程序等待一秒或多秒(并且你在一个 POSIX 系统上,比如 Linux,它带来了sleep()
),你可以这样做:
#include <time.h> /* for time() */
#include <unistd.h> /* for sleep() */
#define SECONDS_TO_WAIT (3)
...
{
time_t t = time(NULL);
/* Instructions to execute go here. */
while ((time(NULL) - t) < SECONDS_TO_WAIT)
{
sleep(1); /* Sleep (wait) for one second. */
}
}
推荐阅读
- python - 不理解这个 Python 脚本
- google-sheets - 如何从谷歌表格的另一张表格中查看 sumif 语句中引用了哪些单元格?
- laravel - 在 Beanstalk 上扩展 Nginx 配置不会正确重写 url
- c# - 是否可以为 Visual Studio 代码段替换参数定义 Tab 键顺序?
- amazon-web-services - 监控 AWS EC2 的内存使用情况
- css - 更改 currentColor 时蒙版 SVG 闪烁
- javascript - 如何更改 Rebass 的断点?
- python - Jupyter 没有启动
- javascript - Firestore 执行后需要很长时间才能结束执行
- android - 延迟协程中的挂起函数不起作用