当前位置: 首页 > news >正文

有谁可以做网站寄生虫如何注册域名网站

有谁可以做网站寄生虫,如何注册域名网站,web美工培训,品牌建设内容措施1、什么是看门狗? 在Linux系统中,看门狗机制主要包括硬件看门狗、软件看门狗和看门狗守护进程三个部分。硬件看门狗是一个独立的计时器设备,用于监视系统的运行状态。如果系统长时间没有发送喂狗信号,硬件看门狗将执行预设的动作…
1、什么是看门狗?

在Linux系统中,看门狗机制主要包括硬件看门狗、软件看门狗和看门狗守护进程三个部分。硬件看门狗是一个独立的计时器设备,用于监视系统的运行状态。如果系统长时间没有发送喂狗信号,硬件看门狗将执行预设的动作,如自动重启系统。软件看门狗和守护进程则通过定期发送喂狗信号来确保系统的正常运行,并在系统出现异常时触发硬件看门狗执行复位操作。

本章主要讲的是软件看门狗!

2、软件看门狗

软件看门狗其实就是一个可以在一定时间内被复位的计数器。当看门狗启动后,计数器开始自动计数,经过一定时间,如果没有被复位,计数器溢出就会对 CPU 产生一个复位信号使系统重启(俗称“被狗咬”)。系统正常运行时,需要在看门狗允许的时间间隔内对看门狗计数器清零(俗称“喂狗”),不让复位信号产生。如果系统不出问题,程序保证按时“喂狗”,一旦程序跑飞,没有“喂狗”,系统“被咬”复位。一般用ioctl即可实现对看门狗的开启跟喂狗。

3、linux中看门狗的相关函数介绍
3.1 watchdog_info结构体
struct watchdog_info {
__u32 options; /* Options the card/driver supports */
__u32 firmware_version; /* Firmware version of the card */
__u8 identity[32]; /* Identity of the board */
};options 字段记录了设备支持哪些功能或选项;
firmware_version 字段记录了设备的固件版本号;
identity 字段则是一个描述性的字符串。options:
#define WDIOF_OVERHEAT 0x0001 /* Reset due to CPU overheat */
#define WDIOF_FANFAULT 0x0002 /* Fan failed */
#define WDIOF_EXTERN1 0x0004 /* External relay 1 */
#define WDIOF_EXTERN2 0x0008 /* External relay 2 */
#define WDIOF_POWERUNDER 0x0010 /* Power bad/power fault */
#define WDIOF_CARDRESET 0x0020 /* Card previously reset the CPU */
#define WDIOF_POWEROVER 0x0040 /* Power over voltage */
#define WDIOF_SETTIMEOUT 0x0080 /* Set timeout (in seconds) */表示设备支持设置超时时间
#define WDIOF_MAGICCLOSE 0x0100 /* Supports magic close char */
#define WDIOF_PRETIMEOUT 0x0200 /* Pretimeout (in seconds), get/set */
#define WDIOF_ALARMONLY 0x0400 /* Watchdog triggers a management or other                                                                 external alarm not a reboot */
#define WDIOF_KEEPALIVEPING 0x8000 /* Keep alive ping reply */  喂狗
3.2、ioctl指令宏

应用层控制看门狗其实非常简单,通过 ioctl()函数即可做到,应用程序中,需要包含头文件<linux/watchdog.h>头文件, 该头文件中定义了一些 ioctl 指令宏,每一个不同的指令宏表示向设备请求不同的操作,如下所示:

#define WDIOC_GETSUPPORT _IOR(WATCHDOG_IOCTL_BASE, 0, struct watchdog_info)
#define WDIOC_GETSTATUS _IOR(WATCHDOG_IOCTL_BASE, 1, int)
#define WDIOC_GETBOOTSTATUS _IOR(WATCHDOG_IOCTL_BASE, 2, int)
#define WDIOC_GETTEMP _IOR(WATCHDOG_IOCTL_BASE, 3, int)
#define WDIOC_SETOPTIONS _IOR(WATCHDOG_IOCTL_BASE, 4, int)
#define WDIOC_KEEPALIVE _IOR(WATCHDOG_IOCTL_BASE, 5, int)
#define WDIOC_SETTIMEOUT _IOWR(WATCHDOG_IOCTL_BASE, 6, int)
#define WDIOC_GETTIMEOUT _IOR(WATCHDOG_IOCTL_BASE, 7, int)
#define WDIOC_SETPRETIMEOUT _IOWR(WATCHDOG_IOCTL_BASE, 8, int)
#define WDIOC_GETPRETIMEOUT _IOR(WATCHDOG_IOCTL_BASE, 9, int)
#define WDIOC_GETTIMELEFT _IOR(WATCHDOG_IOCTL_BASE, 10, int)常用的:
ioctl 指令	           说明
WDIOC_GETSUPPORT	获取看门狗支持哪些功能
WDIOC_SETOPTIONS	用于开启或关闭看门狗
WDIOC_KEEPALIVE	    喂狗操作
WDIOC_SETTIMEOUT	设置看门狗超时时间
WDIOC_GETTIMEOUT	获取看门狗超时时间
4、看门狗开发流程
//打开看门狗设备
open("/dev/watchdog", "O_RDWR");   //需要注意的是,当调用 open()打开看门狗设备的时候, 即使程序中没有开启看门狗计时器,所以,当打开设备之后, 需要使用 指令停止看门狗计时,等所有设置完成之后再开启看门狗计时器//开启/关闭看门狗: WDIOC_SETOPTIONS
使用 WDIOC_SETOPTIONS 指令可以开启看门狗计时或停止看门狗计时,使用方式如下:
ioctl(int fd, WDIOC_SETOPTIONS, int *option);
#define WDIOS_DISABLECARD 0x0001 /*Turn off the watchdog timer停止看门狗计时*/
#define WDIOS_ENABLECARD 0x0002 /* Turn on the watchdog timer开启看门狗计时*///获取/设置超时时间:WDIOC_GETTIMEOUT、WDIOC_SETTIMEOUT
使用 WDIOC_GETTIMEOUT 指令可获取设备当前设置的超时时间,使用方式如下:
ioctl(int fd, WDIOC_GETTIMEOUT, int *timeout);使用 WDIOC_SETTIMEOUT 指令可设置看门狗的超时时间,使用方式如下:
ioctl(int fd, WDIOC_SETTIMEOUT, int *timeout);
超时时间是以秒为单位, 设置超时时间时,不可超过其最大值、否则 ioctl()调用将会失败喂狗: WDIOC_KEEPALIVE
看门狗计时器启动之后,需要在超时之前,去“喂狗”,否则计时器溢出超时将会导致系统复位或产生一个中断信号,通过 WDIOC_KEEPALIVE 指令喂狗,使用方式如下:
ioctl(int fd, WDIOC_KEEPALIVE, NULL);

看门狗的代码实例:

#include <stdio.h>  
#include <stdlib.h>  
#include <fcntl.h>  
#include <unistd.h>  
#include <sys/ioctl.h>  
#include <linux/watchdog.h>  #define WATCHDOG_DEVICE "/dev/watchdog"  int main() {  int fd;  int timeout = 15; // 设置看门狗超时时间为15秒  int ret;  // 打开看门狗设备  fd = open(WATCHDOG_DEVICE, O_WRONLY);  if (fd == -1) {  perror("Cannot open watchdog device");  exit(EXIT_FAILURE);  }  // 设置看门狗超时时间  ret = ioctl(fd, WDIOC_SETTIMEOUT, &timeout);  if (ret == -1) {  perror("Cannot set watchdog timeout");  close(fd);  exit(EXIT_FAILURE);  }  printf("Watchdog timeout set to %d seconds\n", timeout);  // 循环喂狗,保持系统不被复位  while (1) {  printf("Feeding the watchdog...\n");  ret = ioctl(fd, WDIOC_KEEPALIVE, NULL); // 使用WDIOC_KEEPALIVE喂狗  if (ret == -1) {  perror("Cannot feed the watchdog");  break;  }  sleep(timeout - 5); // 在超时前喂狗,这里设置为超时时间减去5秒  }  close(fd);  return 0;  
}
http://www.15wanjia.com/news/26426.html

相关文章:

  • 域名打不开原来的网站优化大师使用心得
  • 有哪些做课件的网站seo能干一辈子吗
  • 沈阳网站建设工作室给企业做网站的公司
  • 网站制造国外引流推广平台
  • 推荐手机网站建设河南网站建设哪家公司好
  • 浙江怎么突然爆发疫情什么是网站seo
  • flash 可以做网站吗杭州百度推广电话
  • 顺的网站建设信息com域名注册
  • 营销型建设宁波网络推广seo软件
  • 做社交网站 投入关键词林俊杰mp3
  • 苏州专业网站建设开发开源seo软件
  • 加强网站安全建设如何做好企业推广
  • 域名的申请流程王通seo赚钱培训
  • 网站建设海报设计网站统计分析工具的主要功能
  • react可以做门户网站么推广优化方案
  • 有没有专门教做扯面的网站重庆seo整站优化报价
  • 自助做app的网站短视频代运营方案策划书
  • 专门做特价的网站网站分析报告
  • 做网站时怎样分割百度公司官网招聘
  • 建e网全屋设计效果图百度手机端排名如何优化
  • 免费企业网络推广网站本地推广平台
  • 专业企业网站搭建服务搜索引擎优化解释
  • 站酷官网入口百度竞价排名软件
  • 如何找专业的网站建设公司企业网络营销案例
  • 注册域名 不建网站每日新闻摘抄10一15字
  • 网站开发公司联系电话网络营销创意案例
  • 台州建设银行官方网站关键词排名优化公司成都
  • 如何做网站的薪酬调查广告点击一次多少钱
  • 网站制作呼和浩特网络推广软文范文
  • 小企业网站建设是怎么做的google seo教程