我正在为Mac编写一个命令行实用程序,它应该在每秒钟打印状态信息。很显然,我不想每秒轮询数十亿次。我能想到的唯一方法是获取当前时间并使用select来等待差异。有没有更好的办法?如何在第二秒每秒运行一次代码?
2
A
回答
4
你所做的任何等待都保证至少等待那段时间,而不是完全等待。 OSX不是一个实时操作系统 - 我不认为有什么办法可以保证这样的事情。
如果你只是想要它的估计,然后睡觉现在和你想要的时间之间的差异(也许少一点时间为日志)将工作。
1
通常使用计时器调度方法会有诀窍。然而重要的是要记住,精度对于简单的定时器来说并不是最好的。
1
这是我有:
#import <stdlib.h>
#import <stdio.h>
#import <time.h>
#import <sys/time.h>
#define TIME_LENGTH 9
int main()
{
struct timeval now;
struct timespec wait;
time_t seconds;
char str[TIME_LENGTH];
wait.tv_sec = 0;
for (;;) {
gettimeofday(&now, NULL);
wait.tv_nsec = (1000000 - now.tv_usec) * 1000;
nanosleep(&wait, NULL);
seconds = now.tv_sec+1;
strftime(str, TIME_LENGTH, "%T", localtime(&seconds));
puts(str);
}
}
它的工作原理,以“眼球”的精度,这应该是足够了。它看起来像更新与内置菜单栏时钟同步。显然,在time.h
,clock_nanosleep
中有一个功能,它可以等待一段时间,而不是等待一段时间,但这种用法在mac上不支持。
相关问题
- 1. 每x秒运行一次代码
- 2. 运行代码每秒只有60次
- 3. 如何在Heroku上每秒运行一次代码?
- 4. 如何让Perl每20秒运行一次代码?
- 5. 每10秒执行一次代码,但在0秒后启动
- 6. 每n秒运行一段代码
- 7. 只能每X秒运行一次内部代码的代理
- 8. 运行时1004错误,每秒执行一次代码
- 9. 在Java中,如何每X秒执行一次代码?
- 10. 每T秒运行一次MATLAB的Java代码
- 11. 每秒用rAF.js运行JavaScript代码?
- 12. PHP:运行PHP代码每10秒
- 13. 每秒运行一次活动
- 14. 每10秒运行一次node.js脚本
- 15. Cron作业 - 每5秒运行一次
- 16. 每秒运行一次循环sleep_for
- 17. 每30秒运行一次函数javascript
- 18. 每15秒运行一次ASPX页面
- 19. 每30秒运行一次Android服务
- 20. 每5秒运行一次宏
- 21. 每3秒运行一次功能
- 22. Javascript每300秒运行一次脚本
- 23. 每5秒运行一次jquery动画
- 24. Cron:每1秒运行一次cron?
- 25. RxSwift代码第一次运行,第二次运行
- 26. 执行代码每x秒
- 27. 如何每两分钟运行一次每秒cron作业
- 28. 如何让我的函数在Python中每秒运行一次?
- 29. 如何在nodejs中每隔5秒运行一次任务
- 30. 如何在Play scala中每3秒运行一次函数?