我是这个论坛的新手,我想问专家一个问题。 我编写了以下程序(更重要的一部分,但这是导致我麻烦的代码)
#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是一个字符文件,它不可寻找,但这看起来很奇怪。
答案 0 :(得分:2)
看起来/ dev / watchdog正在做它应该做的事情。打开/ dev / watchdog后,必须继续写入,否则系统会重新启动。它可能不是崩溃它的lseek,而是缺乏写作。有关详细信息,请参阅linux手册以获取更多信息。
当您以非root用户身份运行时,/ dev / watchdog的打开可能只是失败了,因此系统没有重启。您的代码没有检查open()中的错误。