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

北京酷站科技有限公司51网站空间相册

北京酷站科技有限公司,51网站空间相册,企业推广费用占比多少合适,柳州网站建站费用Qt 进程守护程序 简单粗暴的监控#xff0c;方法可整合到其他代码。 一、windows环境下 1、进程查询函数 processCount函数用于查询系统所有运行的进程中该进程运行的数量#xff0c;比如启动了5个A进程#xff0c;该函数查询返回的结果就为5。 windows下使用了API接口查询…Qt 进程守护程序 简单粗暴的监控方法可整合到其他代码。 一、windows环境下 1、进程查询函数 processCount函数用于查询系统所有运行的进程中该进程运行的数量比如启动了5个A进程该函数查询返回的结果就为5。 windows下使用了API接口查询进程信息该函数纯C无Qt库相关代码注释对代码进行了详细解释。 int processCount(const char* processName) {int countProcess 0;//CreateToolhelp32Snapshot 获取系统中正在运行的进程信息线程信息等HANDLE toolHelp32Snapshot CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (((int)toolHelp32Snapshot) ! -1){PROCESSENTRY32 processEntry32;processEntry32.dwSize sizeof(processEntry32);if(Process32First(toolHelp32Snapshot, processEntry32)) //判断进程获取首进程是否存在{do{int iLen 2 * wcslen(processEntry32.szExeFile); //wcslen - 计算宽字符串的长度char* currentProcessName new char[iLen 1];wcstombs(currentProcessName, processEntry32.szExeFile, iLen 1); //将宽字符转换成多字符if (strcmp(processName, currentProcessName) 0) //对比进程名countProcess;delete []currentProcessName;}while (Process32Next(toolHelp32Snapshot, processEntry32)); //进程获取函数,获取下一个进程名}//关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。CloseHandle(toolHelp32Snapshot);}return countProcess; }2、进程守护代码 进程守护其实就是使用一个进程去定时查询另外一个被守护的进程是否存在不存在则需要启动该进程。代码如下运行时首先需要获取被守护的进程APP使用读取配置文件的方式如果配置文件不存在首次启动该代码则需要选择被守护的进程然后将选择的APP路劲存入配置文件供下次启动读取使用。 #include QApplication #include QFileDialog #include QSettings #include windows.h #include QDebug #include QDateTimeint main(int argc, char *argv[]) {QSettings sets(sys.ini, QSettings::IniFormat);QString targetExePath sets.value(KEY_EXE_PATH).toString();if ( targetExePath){//首次需要选择 被守护的进程QString exepath QFileDialog::getOpenFileName(nullptr, 选择程序, D:/, Exe files (*.exe));if ( ! exepath)sets.setValue(KEY_EXE_PATH, exepath); //写入配置文件}while (1) //死循环不断查询判断{//targetExePath sets.value(KEY_EXE_PATH).toString();QString exeName targetExePath.split(/).last();QDateTime strtTime QDateTime::currentDateTime();int countProcess processCount(exeName.toStdString().c_str()); // 查询该进程运行数量qDebug()use times for Query process:strtTime.msecsTo(QDateTime::currentDateTime())(ms) countProcess:countProcess;if (countProcess 0)system(targetExePath.toStdString().c_str()); //关闭状态 重启进程,注意这里实际运行会阻塞在这里一直等到被守护的线程结束。Sleep(3000);} }二、linux环境下 1、进程查询函数 原理 使用 popen函数 pidof命令 查询对应进程的pid该方法的缺点就是不能像windows那样读取所有进程名从而获取该进程运行的数量。所以如果一个程序加载多个进程同程序进程名相同pid不同使用该方法只能获取最后一个启动的进程pid。 popen属于标准I/O函数库中函数使用该函数启动另外一个进程去执行一个shell命令行。 这里我们称调用popen的进程为父进程由popen启动的进程称为子进程。 popen函数还创建一个管道用于父子进程间通信。父进程要么从管道读信息要么向管道写信息至于是读还是写取决于父进程调用popen时传递的参数。 实现函数如下函数参数输入进程名返回进程的pid,如果返回0则表示进程不存在或未运行。 void Widget::watchdog() {//守护进程QTimer* updateTimer new QTimer(this);connect(updateTimer, SIGNAL(timeout()), this, SLOT(checkApp()));updateTimer-start(300); }void Widget::checkApp() {if (getProcessPidByName(AppName) 0) {system(cd /sdcard);system(./AppName );qDebug() ;qDebug() _ __ _____ _ ;qDebug() | |/ / / ____|| | ;qDebug() | / __ _ _ __ __ _ | | | |__ _ _ __ _ _ __ __ _ ;qDebug() | / _ || _ \\ / _ | | | | _ \\ | | | | / _ || _ \\ / _ |;qDebug() | . \\ | (_| || | | || (_| | | |____ | | | || |_| || (_| || | | || (_| |;qDebug() |_|\\_\\ \\__,_||_| |_| \\__, | \\_____||_| |_| \\__,_| \\__,_||_| |_| \\__, |;qDebug() __/ | __/ |;qDebug() |____/ |____/ ;qDebug() ;} }int Widget::getProcessPidByName(const char* proc_name) {FILE* fp;char buf[100];char cmd[200] { \0 };int pid -1;sprintf(cmd, pidof %s, proc_name);if ((fp popen(cmd, r)) ! NULL) {if (fgets(buf, 255, fp) ! NULL)pid atoi(buf);}pclose(fp);return pid; }
http://www.dnsts.com.cn/news/218182.html

相关文章:

  • 网站建设易客ppt做书模板下载网站有哪些
  • 东莞建设网站公司哈尔滨市公共资源交易中心
  • 一个网站开发环境是什么wordpress怎么加动态背景图图片
  • 旅游景区网站建设的意义南京做网站公司 雷仁
  • 公司网站建设ihanshi用自己主机做网站视频
  • 如何自己建设电影网站浙江网站建设情况分析
  • 网站开发和前端和数据媒体服装网站建设策划书预期投入
  • 深圳网站建设968网站有二维码吗
  • 网站设计基础青岛网站制作永诚
  • 成都装修建材网站建设网站建设学习 服务器
  • 松原公司做网站滨湖区知名做网站选哪家
  • 公司做免费网站教育机构网站模板
  • 本地wordpress无法打开网站怎样做网络推广教学设计
  • 团购网站及域名wordpress 文章 格式
  • 佛山高端网站建设工作室制作一个公司网页多少钱
  • 巩义做网站汉狮网络螺蛳粉的软文推广
  • 鞍山信息港官网做优化的网站用什么空间好
  • 手机网站设计立找亿企邦网站域名如何实名认证
  • 兰州哪里做网站友情下载网站
  • 工程建设项目网站什么是网上商店
  • 一级a做片性视频 网站在线观看哈尔滨最新政策
  • 吴兴网站建设python 网站开发入门
  • 北京网站建设那家好大丰做网站的公司
  • 上海网站定制公司做淘宝那样的网站要多少钱
  • 青山湖网站建设网上购物平台哪个最正规
  • 怎样才可以知道网站是否优化微信上微网站怎么做的
  • 二级域名怎么做网站wordpress付费问答
  • 济源网站建设哪家好在线做简单的网站吗
  • 建设银行征信中心个人信用查询官方网站松阳建设网站
  • 网站规划图花生壳做的网站