以下是一个简单的看门狗的demo用例,使用c语言编写:
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/watchdog.h>
#define WATCHDOG_DEV "/dev/watchdog"
int main()
{
int fd;
int timeout = 10; // 设置看门狗超时时间为10秒
fd = open(WATCHDOG_DEV, O_WRONLY);
if (fd == -1) {
perror("open");
exit(EXIT_FAILURE);
}
// 设置看门狗超时时间
if (ioctl(fd, WDIOC_SETTIMEOUT, &timeout) != 0) {
perror("ioctl");
exit(EXIT_FAILURE);
}
// 启动看门狗
if (ioctl(fd, WDIOC_SETOPTIONS, WDIOS_ENABLECARD) != 0) {
perror("ioctl");
exit(EXIT_FAILURE);
}
// 模拟业务代码
while (1) {
printf("I'm working...\n");
sleep(5);
}
// 关闭看门狗
if (ioctl(fd, WDIOC_SETOPTIONS, WDIOS_DISABLECARD) != 0) {
perror("ioctl");
exit(EXIT_FAILURE);
}
close(fd);
return 0;
}