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

有服务器还需要买网站空间吗ps素材免费下载素材库

有服务器还需要买网站空间吗,ps素材免费下载素材库,微信小程序二维码生成器,青岛免费网站建设使用WaitForSingleObject函数,可以判断进程是否退出。 WaitForSingleObject函数的作用是:等待直到指定的对象处于信号状态(通知状态)或到达指定的等待时间(超时时间)。 函数声明如下: 1 DWOR…

使用WaitForSingleObject函数,可以判断进程是否退出。

WaitForSingleObject函数的作用是:等待直到指定的对象处于信号状态(通知状态)或到达指定的等待时间(超时时间)。

函数声明如下:

1 DWORD WaitForSingleObject(
2   [in] HANDLE hHandle,
3   [in] DWORD  dwMilliseconds
4 );

参数说明:

hHandle:需要等待的对象

dwMilliseconds:超时时间(毫秒),如果设置为INFINITE,则会一直等待下去,直到对象被通知。

WaitForSingleObject支持以下对象:

  • Change notification
  • Console input
  • Event
  • Memory resource notification
  • Mutex
  • Process
  • Semaphore
  • Thread
  • Waitable timer

这里只是简单介绍一下这个函数,如果需要了解更详细的说明,可以参考:waitForSingleObject 函数 (synchapi.h) - Win32 apps | Microsoft Learn

监控新创建的进程退出:

这里我们创建一个MFC程序来进行演示,在界面上添加一个按钮,创建记事本进程。

创建进程后创建一个线程等待进程退出,在线程处理函数中调用WaitForSingleObject,传入进程对象进行等待

1 void CProcessMonitorDlg::OnBnClickedButton2()
2 {
3     LPTSTR szNotepad = _tcsdup(TEXT("notepad.exe"));
4     ::CreateProcess(NULL, szNotepad, NULL, NULL, FALSE, 0, NULL, NULL, &sinfo, &pi);
5     ::CreateThread(NULL, 0, MonitorThreadProc, NULL, 0, NULL);    
6     free(szNotepad);
7 }

线程处理函数

 1 DWORD __stdcall CProcessMonitorDlg::MonitorThreadProc(LPVOID lpThreadParameter)2 {3     ::WaitForSingleObject(pi.hProcess, INFINITE);4     DWORD dwCode = 0;5     GetExitCodeProcess(pi.hProcess, &dwCode);6     TCHAR buf[260]{};7     wsprintf(buf, L"notepad.exe exit,exit code = %d", dwCode);8     ::MessageBox(NULL, buf, L"tooltip", MB_OK);9     return 0;
10 }

详细的代码可以参考文末的示例代码。

监控已经存在的进程退出:

我们先调用CreateToolhelp32Snapshot、Process32First和Process32Next函数进行进程的枚举,然后再调用WaitForSingleObject等待进程退出。

这里我们以cmd.exe为例

先枚举进程,然后创建线程,等待进程退出。

 1 PROCESSENTRY32 pe{};2     pe.dwSize = sizeof(PROCESSENTRY32);3     HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);4 5     if (hSnapShot == INVALID_HANDLE_VALUE)6     {7         ::MessageBox(NULL, L"创建进程快照失败", L"", MB_OK | MB_ICONINFORMATION);8         return;9     }
10 
11     BOOL bNext = Process32First(hSnapShot, &pe);
12 
13     while (bNext)
14     {
15         if (lstrcmp(pe.szExeFile,L"cmd.exe") == 0)
16         {
17             ::CreateThread(NULL, 0, MonitorCMDThreadProc, (PVOID)pe.th32ProcessID, 0, NULL);
18             CloseHandle(hSnapShot);
19             break;
20         }
21 
22         bNext = Process32Next(hSnapShot, &pe);
23     }
24 
25 
26     CloseHandle(hSnapShot);

线程处理函数

 1 DWORD dwCmdPid = (DWORD)lpThreadParameter;2     HANDLE hProcessCmd =::OpenProcess(PROCESS_QUERY_INFORMATION| SYNCHRONIZE, FALSE, dwCmdPid);3 4     if(hProcessCmd)5         ::WaitForSingleObject(hProcessCmd, INFINITE);6 7     DWORD dwCode = 0;8     GetExitCodeProcess(hProcessCmd, &dwCode);9     CloseHandle(hProcessCmd);
10     TCHAR buf[260]{};
11     wsprintf(buf, L"cmd.exe exit,exit code = %d", dwCode);
12     ::MessageBox(NULL, buf, L"tooltip", MB_OK);
13     return 0;

其实这种方式挺简单的,可以不用开线程一直去刷,然后判断进程是否存在。

通过这种方式可以监测服务程序意外退出,并进行重启操作。

示例代码

WindowsProgramming/ProcessMonitor at master · zhaotianff/WindowsProgramming · GitHub

http://www.yayakq.cn/news/662520/

相关文章:

  • 网站内图片变换怎么做手机论坛网站源码
  • 深圳营销型网站方案wordpress地图生成
  • 北京专业网站建设网站网站怎么做中英文交互
  • 网站建设外包需要注意哪些霍邱县住房和城乡建设局网站
  • .mom域名可以做网站吗苏州做网站推广的公司哪家好
  • 塘厦镇住房规划建设局网站网站建设优化服务机构
  • 大尺度做爰后入网站免费的云服务器哪家好
  • 境外网站开发简单电商网站模板下载
  • 做网站设计的论文中摘要怎么写网站建设招标无锡
  • 个人网站建设实训报告seo外链发布
  • 手机网站有什么好处网站建设及宣传管理规定
  • 中商华兴建设有限公司网站网站开发售后工作
  • vs网站毕业设计怎么做个人网站转企业
  • 建站快车官网婚恋网站做期货现货贵金属的人
  • 惠州企业网站seo公司石家庄校园兼职网站建设
  • 市场调研怎么写免费seo刷排名
  • 做网站需要公章吗建设银行网站怎么看交易记录
  • 海南网站建设报价方案推广途径
  • 网站内容很少如何做seo免费游戏网站建设游戏后台
  • 微网站 报价本地门户网站
  • 网站建设 聊城ppt模板免费下载网站 知乎
  • 帮别人做网站交税陕西建设人才网站
  • 企业网站开发说明梅州南站
  • 大兴黄村网站建设公司网站文件夹目录
  • 企业网站建设公司名称宝洁公司网站建设案例
  • 做网站个人怎么签合同衡阳做网站ss0734
  • 印尼网站建设费用0453牡丹江信息网二手房买卖
  • 北京备案网站vue网页模板免费
  • 罗湖商城网站建设哪家便宜精品课程网站建设设计方案
  • 如何在门户网站做搜索引擎与客户沟通网站建设的技巧