2013-10-25 69 views
0

我是新來這個論壇,我想問專家一個問題。 我寫了下面的程序(的更大的東西的一部分,但是這是使我煩惱的代碼)lseek()on/dev/watchdog導致系統崩潰

#include <unistd.h> 
#include <fcntl.h> 

int main() 
{ 
    int fd; 
    fd = open("/dev/watchdog",O_RDONLY); 
    lseek(fd,0,SEEK_END); 
    return 0; 
} 

困擾我的事情是,當我運行此程序爲根,20-30秒後,系統崩潰了,我似乎無法弄清楚爲什麼。這不會像普通用戶那樣發生。 請問關於這個問題,請賜教嗎?

謝謝!

PS。是的,我知道/ dev/watchdog是一個字符文件,它不可查找,但這看起來很奇怪。

回答

1

它看起來像/ dev/watchdog正在做它應該做的事情。一旦你打開/ dev/watchdog,你必須繼續寫入,否則系統會重新啓動。這可能不是讓它崩潰的原因,它是缺乏寫作。有關更多信息,請參閱有關看門狗的Linux手冊頁。

當您作爲非root用戶運行時,您打開的/ dev/watchdog可能只是失敗,因此係統不會重新啓動。你的代碼不檢查open()中的錯誤。