我想在linux中使用定時器中斷來做軟件wathdog定時器。我怎樣才能在linux中產生定時器中斷?Linux中的看門狗定時器
3
A
回答
8
如果你想使用定時器中斷,使用信號,特別是SIGALRM
。 您可以使用功能alarm()來要求超時。如果你想要使用粒度,你可以使用ualarm()。 達到超時後,它將調用您之前定義的回調函數。
下面是一個例子代碼:
#include <signal.h>
void watchdog(int sig)
{
printf("Pet the dog\r\n");
/* reset the timer so we get called again in 5 seconds */
alarm(5);
}
/* start the timer - we want to wake up in 5 seconds */
int main()
{
/* set up our signal handler to catch SIGALRM */
signal(SIGALRM, watchdog);
alarm(5);
while (true)
;
}
你必須執行一個看門狗其他幾個選項:
- 寫/使用內核驅動程序,它實際上可以作爲一個看門狗,應用硬復位如果狗不是寵物(或踢)
- 使用watchdog,一個有趣的軟件看門狗守護進程的實現。
1
中斷在應用程序級別不存在(只有內核管理它們,事實上它已經獲得了大量的定時器中斷)。你可以有信號,定時器和延遲系統調用(特別是poll
或nanosleep
)。閱讀Advanced Linux Programming。
首先閱讀time(7)手冊頁。然後timer_create(2),poll(2),timerfd_create(2),setitimer(2),sigaction(2),nanosleep(2),clock_gettime(2)等....
一些內核也可以被配置爲具有看門狗定時器......
相關問題
- 1. 看門狗定時器dll
- 2. 誰在Linux中默默地踢了看門狗定時器?
- 3. Linux軟件看門狗
- 4. 窗口看門狗定時器STM32F4
- 5. 關於看門狗定時器
- 6. 單一進程的看門狗[Linux]
- 7. 的Linux:看門狗總是很忙
- 8. 定製看門狗記錄
- 9. OpenCL的看門狗
- 10. Linux nmi看門狗如何工作?
- 11. IPhone看門狗&malloc
- 12. 在C++中實現看門狗定時器11
- 13. 用於服務器的Linux C++看門狗
- 14. 調用file.format時看門狗超時?
- 15. 看門狗沒有停止?
- 16. GPRS連接看門狗
- 17. 服務看門狗設計
- 18. Crashlytics使用ANR看門狗
- 19. 看門狗在vC++中的應用
- 20. Windows XP中的看門狗測試
- 21. 誰在Linux中刷新硬件看門狗?
- 22. STM32上的看門狗定時器的中斷服務程序發現
- 23. win ce中關於看門狗定時器的某些代碼的解釋?
- 24. 在msm800中啓用硬件看門狗
- 25. 看門狗類型的節目需要
- 26. 作爲看門狗的Shell腳本
- 27. 具有「看門狗」的Ruby線程
- 28. 如何在C上編寫一個簡單的看門狗定時器?
- 29. 控制器中軟件看門狗的用途是什麼?
- 30. 硬件看門狗GPIO ...自動運行
感謝您的寶貴答案。我想實現準確的毫秒延遲。這怎麼可能? – VigneshK 2013-03-25 07:23:49
沒問題,我會編輯我的答案。 – stdcall 2013-03-25 07:31:26