【问题标题】:lseek() on /dev/watchdog causes system crash/dev/watchdog 上的 lseek() 导致系统崩溃
【发布时间】:2013-10-25 17:23:53
【问题描述】:

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

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

【问题讨论】:

    标签: linux unix crash watchdog lseek


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-07-12
      • 2013-04-01
      • 1970-01-01
      • 2014-05-07
      • 2015-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      相关资源
      最近更新 更多