#include "pch.h" #include <iostream> #include <Windows.h> //线程同步:消息、事件、临界区(不是内核对象)、互斥体 //创建互斥体对象,守护程序利用OpenMutex()函数检测对方的互斥体对象是否存在,不存在则创建进程 //线程回调函数 //参数:程序名称 DWORD WINAPI ThreadCheckProc(LPVOID lParam) { STARTUPINFOA si = { sizeof(si) }; PROCESS_INFORMATION pi = { 0 }; HANDLE hMutex; while (true) { hMutex = OpenMutexA(MUTEX_ALL_ACCESS, FALSE, (LPCSTR)lParam); if (!hMutex) { //unicode下,用W版会失败 CreateProcessA( (LPCSTR)lParam, NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi); WaitForSingleObject(pi.hProcess, INFINITE); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); } else { CloseHandle(hMutex); } Sleep(500); } } int main() { DWORD Tid; //创建自己的互斥体对象 CreateMutexA(NULL, TRUE, (LPCSTR)"p1.exe"); //创建线程检测对方的互斥体 CreateThread(NULL, 0, ThreadCheckProc, (LPVOID*)"p2.exe", 0, &Tid); while (1) { Sleep(500); }; return 0; }
克什克腾ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
#include "pch.h" #include <iostream> #include <Windows.h> /线程回调函数 //参数:程序名称 DWORD WINAPI ThreadCheckProc(LPVOID lParam) { STARTUPINFOA si = { sizeof(si) }; PROCESS_INFORMATION pi = { 0 }; HANDLE hMutex; while (true) { hMutex = OpenMutexA(MUTEX_ALL_ACCESS, FALSE, (LPCSTR)lParam); if (!hMutex) { //unicode下,用W版会失败 CreateProcessA( (LPCSTR)lParam, NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi); WaitForSingleObject(pi.hProcess, INFINITE); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); } else { CloseHandle(hMutex); } Sleep(500); } } int main() { DWORD Tid; //创建自己的互斥体对象 CreateMutexA(NULL, TRUE, (LPCSTR)"p2.exe"); //创建线程检测对方的互斥体 CreateThread(NULL, 0, ThreadCheckProc, (LPVOID*)"p1.exe", 0, &Tid); while (1) { Sleep(500); }; return 0; }
编译环境:vs2017 unicode
修改生成的程序为p1.exe,p2.exe,并且p1.exe,p2.exe在同一路径下,可以实现简单的双进程守护。
挂起其中的一个进程,可以实现全部关闭。或者,迅速关闭p1.exe,p2.exe亦可。
网站名称:C++实现双进程守护
链接分享:https://www.cdcxhl.com/article18/gcigdp.html
成都网站建设公司_创新互联,为您提供手机网站建设、App开发、网站导航、企业网站制作、定制开发、网站策划
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联