2012-09-10 54 views
0

我想刷新並控制時間間隔更改。大多數人只有無限循環不斷地查詢time.h和浪費週期的時間。有一種方法可以在不影響系統的情況下獲得時鐘變化?我使用的是C/C++,真的很想學習如何僅使用Linux庫手動執行此操作。大多數程序需要時間概念。在沒有輪詢的情況下更改時間

我想收到系統時鐘更新的通知。我正在嘗試做一個實時響應的科學應用程序。睡眠()和類似的東西只能讓我指定一個時間延遲從執行那個狀態開始。從c頭文件返回的Localtime()和字符串時間只給了我執行時的具體時間。如果我使用它,這個時間爲時已晚,已經過了很多納秒。

+2

你想定期做些什麼,或者你想得到系統時鐘更新的通知嗎? –

回答

1

閱讀time(7)手冊頁,瞭解如何使用系統調用gettimeofday(2)setitimer(2)clock_gettime(2)timer_create(2)等等,並與時間相關的庫函數(strftimelocaltime ...)。

如果您想編寫接收定時器事件的應用程序代碼,請了解定時器和例如SIGALRM信號。先閱讀signal(7)

但是你真的應該閱讀例如Advanced Unix ProgrammingAdvanced Linux Programming和了解什麼是syscalls

您可能需要使用poll(2)輪詢或等待。

0

最便攜的兼容大多數其他任務的最基本的方法是select。它會一直休眠,直到一段時間過去或文件已準備好進入I/O,這使您可以在下一個任務發生之前更新任務列表。如果您不需要中斷功能,則可以使用sleep(或usleep)。

+0

我今天會推薦'poll'系統​​調用而不是'select'(因爲'fd_set'的大小是有限的)。 –

相關問題