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

有啥创意可以做商务网站的长春建站公众号

有啥创意可以做商务网站的,长春建站公众号,福州在线项目建设管理系统,邯郸网络运营中心电话多少一、前言 Linux环境。 我们在日常编写的程序中,可能会出现一些细节问题,导致程序卡死,即程序没法正常运行,界面卡住,也不会闪退... 当这种问题出现在客户现场,那就是大问题了。。。 当我们暂时还无法排…

一、前言

Linux环境。

我们在日常编写的程序中,可能会出现一些细节问题,导致程序卡死,即程序没法正常运行,界面卡住,也不会闪退...

当这种问题出现在客户现场,那就是大问题了。。。

当我们暂时还无法排查出问题时,可以使用一些特殊手段进行监控,当发现程序卡死的时候,就可以将程序杀死掉。然后再将程序启动起来。

二、程序内部操作

首先在我们的程序代码中,增加QTimer超时或者线程去执行,每两秒钟执行命令:touch appclear.txt  ,去修改文件的最近修改时间

这样做的处理是,只要主程序还没有卡死,那么appclear.txt文件就会每两秒钟都会被修改,剩下我们只需要在外部启动一个脚本用于监测该文件的修改时间,如果大于某个时间段没有修改操作了,那么就说明程序卡死了,就需要立即杀死程序。

1.QT

QTimer m_touch_timer;// 每2s改一下文件的修改该时间,使得脚本可以监控程序有没有死掉
connect(&m_touch_timer, &QTimer::timeout, [this]() {QProcess::startDetached("touch", QStringList() << "appclear.txt");
});
m_touch_timer.setInterval(2000);
m_touch_timer.start();

2.C/C++

#include <iostream>  
#include <thread>  
#include <chrono>  
#include <cstdlib> // 对于system函数  // 定义一个函数,该函数将作为线程的执行体  
void periodicTouch() {  while (true) {  // 执行touch命令  system("touch appclear.txt");  // 等待两秒钟  std::this_thread::sleep_for(std::chrono::seconds(2));  }  
}  int main() {  // 创建一个线程来运行periodicTouch函数  std::thread touchThread(periodicTouch);  touchThread.join();  return 0;  
}

三、外部监控脚本

此脚本会每两秒钟监控一次appclear.txt文件的最近修改时间,如果当前时间与文件的最近修改时间做差值 大于 10,那么就说明程序已经卡死10秒钟了,可以杀死程序。(假设程序名为HelloWorld)

#!/bin/bashDATE_N_=`date "+%Y-%m-%d"`
LOG_PATH_NAME="/home/Jtom/log/${DATE_N_}_appclear_sh.log"log_info()
{DATE_N=`date "+%Y-%m-%d %H:%M:%S"`echo "${DATE_N} $0 [INFO] $@" >> ${LOG_PATH_NAME}
}sleep 5log_info "start"while true ;dotimestamp=`date +%s`filepath=/home/Jtom/appclear.txtif [ -f $filepath ];thenfiletimestamp=`stat -c %Y $filepath`timecha=$[$timestamp - $filetimestamp]if [ $timecha -gt 10 ];thenlog_info '强制退出程序'killall -9 HelloWorld	# HelloWorld 你的程序名字rm -f $filepathsleep 10elsesleep 2fielselog_info "文件不存在或者您输入的路径有误"sleep 5fi
donelog_info "end"

四、再重新启动程序

程序被杀死后肯定需要自动再起来,那么我们还需要另一个脚本进行监控,如果程序没有被运行,则立即起来。

可以查看我之前的另一篇文章。

Linxu 守护程序icon-default.png?t=N7T8https://blog.csdn.net/cpp_learner/article/details/139475547?spm=1001.2014.3001.5502

五、总结

这样操作下来,就可以避免程序卡死的尴尬情况。

当然,这只是一种临时处理方式,肯定不能长期使用,最终还是得排查程序找出问题,为什么卡死,这才是程序员该做的事情!

http://www.sczhlp.com/news/71832/

相关文章:

  • 企业宣传型的网站网络广告推广公司
  • Chainlink预言机学习 - 若
  • 网站建设苏州公司秦皇岛seo服务外包
  • 石家庄外贸网站建设公司排名东莞网站推广团队
  • 自己做的网站某个网页打开很慢网站模版自适应
  • 三亚凤凰镇网站建设兼职招聘网互联网技术的应用
  • 怎样创造网站wordpress阅读数 显示k
  • 帮人代做静态网站多少钱公司网页网站建设
  • 网上医疗和医院网站建设手机网站建设原则
  • 网站被百度蜘蛛爬死了泰安岱岳区招聘网最新招聘信息
  • AI Compass前沿速览:Kimi K2、InfinityHuman-AI数字人、3D-AI桌面伴侣、叠叠社–AI虚拟陪伴
  • 绿色制造背景下智能许可系统如何助力企业碳足迹减少
  • 智能许可系统如何满足ISO质量认证与行业监管双重要求
  • 从供应商到终端客户——全链条许可协同提升交付效率
  • 研发-生产-财务部门如何通过许可联动打破部门壁垒
  • 培训行业门户网站建设中国建设银行邵阳分行网站
  • 龙岗网络营销网站制作哪里好网站在线演示
  • 网站备案号注销查询扁平化网站设计教程
  • 建设大型网站推广收费景安网络网站建设
  • 做网站用的符号外贸网站装修
  • 济南智能网站建设服务网易企业邮箱登录参数错误
  • 受欢迎的建网站哪家好wordpress 建立数据库连接时出错 用户名密码可能不正确
  • 常州网站外包h5网站建设价格
  • 如何在百度做自己公司的网站品牌建设实施纲要
  • 建网站报价 优帮云重庆网站建设jwzcq
  • C# WinForms实现模拟叫号系统
  • 商城建设网站怎么注册个人邮箱账号
  • 做本地网站赚钱吗网站建设方案文档
  • 网站优化的主要任务端游排行榜前十名网络游戏
  • 网站建设与管理视频教程研发流程的六个阶段