我正在爲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. 每15秒運行一次JavaScript代碼
- 2. 運行代碼每秒只有60次
- 3. 如何在Heroku上每秒運行一次代碼?
- 4. 如何讓Perl每20秒運行一次代碼?
- 5. 每10秒執行一次代碼,但在0秒後啓動
- 6. 每n秒運行一段代碼
- 7. PHP:運行PHP代碼每10秒
- 8. Cron:每1秒運行一次cron?
- 9. 每3秒運行一次功能
- 10. 每秒運行一次循環sleep_for
- 11. 每30秒運行一次Android服務
- 12. Cron作業 - 每5秒運行一次
- 13. RxSwift代碼第一次運行,第二次運行
- 14. 如何每兩分鐘運行一次每秒cron作業
- 15. 如何在nodejs中每隔5秒運行一次任務
- 16. 如何在C中每t秒運行一次?
- 17. 每隔幾秒只在setInterval函數內執行一次代碼
- 18. 運行每秒運行一次只在碎片運行一次onCreateView()
- 19. 如何每隔30秒刷新一次ActionScript3代碼?
- 20. 如何打印每秒迭代次數?
- 21. 如何每n秒運行一次耗時的過程?
- 22. 如何運行一個python腳本每秒10次
- 23. 我如何每n秒運行一次jQuery load()請求?
- 24. 如何每5秒鐘運行一次shell腳本2分鐘?
- 25. 如何每3秒運行一次蜂鳴聲?
- 26. 在VSTS中如何每5秒運行20秒webtest
- 27. 在Arduino上每y秒執行一次x秒的功能
- 28. 爲什麼這段代碼每秒運行1000次時運行速度很慢?
- 29. 如何在Android中運行一些代碼20秒
- 30. jquery運行代碼最後一次按鍵後2秒