Qt 控制watchdog app hacking
/*************************************************************************** Qt 控制watchdog app hacking* 声明:* 本文主要是为了查看之前朋友留下的Qt控制watchdog软件运作机制。** 2015-12-31 深圳 南山平山村 曾剑锋*************************************************************************/ 一、参考文档:1. Qt Documentation:http://doc.qt.io/qt-4.8/qbasictimer.html2. QTimer和QBasicTimer使用:http://blog.csdn.net/thinkme2010/article/details/91127853. stm32独立看门狗和窗口看门狗的区别是什么?http://www.zhixinrui.com/thread-1192-1-1.html4. Linux下Watchdoghttp://blog.csdn.net/hshl1214/article/details/6248942 二、QBasicTimer Class:This is a fast, lightweight, and low-level class used by Qt internally. We recommend using the higher-level QTimer class rather than this class if you want to use timers in your applications. Note that this timer is a repeating timer that will send subsequent timer events unless the stop() function is called.三、Linux下watchdog的工作原理Watchdog在实现上可以是硬件电路也可以是软件定时器,能够在系统出现故障时自动重新启动系统。在Linux 内核下, watchdog的基本工作原理是:当watchdog启动后(即/dev/watchdog 设备被打开后),如果在某一设定的时间间隔内/dev/watchdog没有被执行写操作, 硬件watchdog电路或软件定时器就会重新启动系统。四、cat mainwindow.cpp#include "mainwindow.h"#include "ui_mainwindow.h"#include <unistd.h>#include <fcntl.h>#include <sys/ioctl.h>#include <linux/types.h>#include <linux/watchdog.h>#include <QMessageBox>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);fd = 0;times = 0;}MainWindow::~MainWindow(){delete ui;::close(fd);}void MainWindow::timerEvent(QTimerEvent *){int dummy;QString str;times++;/*** timer每次都会执行,有点不合理*/if(ui->checkBox->isChecked())::ioctl(fd,WDIOC_KEEPALIVE,&dummy);ui->times->setText(str.sprintf("%d",times));}void MainWindow::on_pushButton_clicked(){// 打开watchdog设备文件,就相当于开机了watchdog,并设置了一个默认值// 这个默认值是多少,目前不知道,去跟一下驱动,应该是可以获知的。if(ui->pushButton->text() == QString("open watchdog")){ui->pushButton->setText("close watchdog");ui->checkBox->setDisabled(true);fd = ::open("/dev/watchdog",O_WRONLY);if(fd < 0){QMessageBox::about(this,"error","open watchdog failure");exit(-1);}times = 0;ui->times->setText("0");timer.start(1000,this);}else // 关闭fd,就相当于关闭了watchdog {ui->pushButton->setText("open watchdog");ui->checkBox->setEnabled(true);timer.stop();::close(fd);}}void MainWindow::moveEvent(QMoveEvent *){this->move(QPoint(0,0));}void MainWindow::resizeEvent(QResizeEvent *){this->showMaximized();}void MainWindow::closeEvent(QCloseEvent *){exit(0);}
转载于:https://www.cnblogs.com/zengjfgit/p/5090664.html
Qt 控制watchdog app hacking相关推荐
- linux watchdog demo hacking
/*********************************************************************** linux watchdog demo hacking ...
- 支持Tasker控制的app合集
跟各种Tasker插件打交道,原因有两点: 1.站在开发者的角度:Tasker虽为神器,也不能面面俱到,一个原因就是Android自身过于分裂化造成的,不可能兼顾全平台和机型:个人开发者精力有限,也满 ...
- 仿vivo控制中心下载_手机控制中心app
手机控制中心app可以用来提供系统管理功能和界面设置功能,它让你快速的访问你手机的各个应用,手机控制中心app还拥有飞机模式.WiFi.调整亮度.手电筒.相机.控制音频.计算器等调控功能,欢迎使用. ...
- 仿vivo控制中心下载_仿vivo控制中心下载_手机控制中心app
手机控制中心app可以用来提供系统管理功能和界面设置功能,它让你快速的访问你手机的各个应用,手机控制中心app还拥有飞机模式.WiFi.调整亮度.手电筒.相机.控制音频.计算器等调控功能,欢迎使用. ...
- 利用blinker,让arduino实现多路继电器状态控制和APP端状态反馈
利用blinker,让arduino实现多路继电器状态控制和APP端状态反馈 有需要的朋友可以直接拷贝代码拿来使用,按钮是自锁按钮控制的,不是点动开关型的.这是经过许多人的经验总结和奉献才调通的程序, ...
- Python 通过微信控制实现app定位发送到个人服务器,再转发微信服务器接收位置信息。
考虑到女友的安全问题,就做了一个app实现定位和服务器实现转发的东西.刚学python,竟没想到用对象编程会更加方便,全程过程式开发,代码有点臃肿,就当学习下python吧.效果就是:在微信公众号中输 ...
- Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
import socket import threading import os import requests from flask import Flask from flask import r ...
- 基于高通410c开发板,开发android端家庭控制中心APP(1)
家庭控制中心APP运行在android端,通过与服务器通讯控制高通410c开发板. 基本功能如下: 1. 应用分为三个功能模块,包括电动窗帘.智能照明以及烟雾模块. 2. 电动窗帘模块中,包括调整窗帘 ...
- 基于STM32蓝牙控制的app智能台灯设计
提示:记录毕设 文章目录 前言 一.任务书 1.1设计(研究)目标: 1.2设计(研究)内容: 二.代码思路 三.硬件设计 3.1总体设计 3.2蓝牙部分设计 四.联系我们 五.部分代码 喜欢请点赞哦 ...
最新文章
- 缓冲流、转换流、序列化流代码练习
- 【转】WPF之路-常用布局控件一
- codeforces B. Design Tutorial: Learn from Life
- 如何在centos7上安装FreeIPA的客户端
- Django结合Bootstrap分页显示mysql中的值
- JAVA共通関数--シングルクォーテーションをSQL用に追加する
- 详解将FTP映射至Windows
- 树莓派gpio接ttl转usb串口调试
- javascript视频教程之《ECMA5核心+设计模式》
- 统计通话次数和时间的软件_通话时间统计app下载-通话时间统计下载 2.2.2 安卓版 - 河东软件园...
- 【已解决】微信小程序web-view嵌套H5,使用setStorageSync,localStorage.setItem有时候失效的问题
- 给自己的IntelliJ IDEA 设置签名
- NVIDIA 图像显卡参数列表
- EFPower tool 使用时发生的异常
- html 整体缩小zoom,页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
- ibm服务器修改uefi和legacy,uefi和legacy的区别详细分析(附带uefi改legacy教程)
- 50道简单家常菜~~~~~让你得意厨房
- 执行npm run build的时候报错怎么办?
- c++课程设计总结报告
- 在Spring Cloud中.yml与.properties