我正在为Linux编写一个系统监视器,并希望包含一些看门狗功能。在内核中,即使关闭了/ dev/watchdog,也可以将看门狗配置为继续运行。换句话说,如果我的守护进程正常退出并关闭/ dev/watchdog,则系统将在59秒后重新启动。这对用户而言可能是或可能不是合意的行为。Linux软件看门狗
我需要让我的守护进程知道这个设置,因为它会影响我如何处理SIGINT。如果设置是打开的,我的守护进程需要(最好)在退出时启动有序关闭,或者(至少)警告用户系统即将重启。
有没有人知道从用户空间获取此设置的方法?我没有在sysconf()中看到任何东西来获取值。同样,我需要能够判断软件看门狗是否已启用。
编辑:
Linux提供了一个非常简单的监视界面。一个进程可以打开/ dev/watchdog,一旦打开设备,内核将开始60秒倒计时重新启动,除非有一些数据被写入该文件,在这种情况下时钟会重新设置。
根据内核的配置方式,关闭该文件可能会或可能不会停止倒计时。从文档:
看门狗可以在不引起 重启停止,如果设备 的/ dev /看门狗正确关闭,除非 你的内核编译 启用CONFIG_WATCHDOG_NOWAYOUT选项 。
我需要能够判断CONFIG_WATCHDOG_NOWAYOUT是否在用户空间守护进程中设置,以便我可以以不同方式处理关闭所述守护进程。换句话说,如果设置为高,一个简单的:
# /etc/init.d/mydaemon stop
...会重新启动59秒的系统,因为没有什么是不再写入到/ dev /看门狗。所以,如果它的设置很高,我的SIGINT处理程序需要做额外的事情(即警告用户至少)。
我找不到获取从用户空间此设置的方式:(任何帮助表示赞赏。
API规范中Magic Close和IOCTL的详细信息可以确认上面的注释,但会提供更多背景细节。例如,请参阅[this](http://www.mjmwired.net/kernel/Documentation/watchdog/watchdog-api.txt)。首先发现[这里](http://stackoverflow.com/a/2020516/939250)。 – 2012-01-25 16:15:10