/ dev / watchdog上的lseek()会导致系统崩溃

时间:2013-10-25 17:23:53

标签: linux unix crash watchdog lseek

我是这个论坛的新手,我想问专家一个问题。 我编写了以下程序(更重要的一部分,但这是导致我麻烦的代码)

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

int main()
{
    int fd;
    fd = open("/dev/watchdog",O_RDONLY);
    lseek(fd,0,SEEK_END);
    return 0;
}
困扰我的是,以root身份运行此程序后,20-30秒后,系统崩溃,我似乎无法弄清楚原因。这不会像普通用户那样发生。 关于这个问题,请你告诉我?

谢谢!

PS。是的,我知道/ dev / watchdog是一个字符文件,它不可寻找,但这看起来很奇怪。

1 个答案:

答案 0 :(得分:2)

看起来/ dev / watchdog正在做它应该做的事情。打开/ dev / watchdog后,必须继续写入,否则系统会重新启动。它可能不是崩溃它的lseek,而是缺乏写作。有关详细信息,请参阅linux手册以获取更多信息。

当您以非root用户身份运行时,/ dev / watchdog的打开可能只是失败了,因此系统没有重启。您的代码没有检查open()中的错误。