1

我是这个论坛的新手,想请教专家一个问题。我编写了以下程序(更大的一部分,但这是给我带来麻烦的代码)

#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 是一个字符文件,它不可搜索,但这看起来很奇怪。

4

1 回答 1

2

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

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

于 2013-10-25T18:58:47.547 回答