您好,登錄后才能下訂單哦!
#include?"pch.h" #include?<iostream> #include?<Windows.h> //線程同步:消息、事件、臨界區(qū)(不是內(nèi)核對(duì)象)、互斥體 //創(chuàng)建互斥體對(duì)象,守護(hù)程序利用OpenMutex()函數(shù)檢測(cè)對(duì)方的互斥體對(duì)象是否存在,不存在則創(chuàng)建進(jìn)程 //線程回調(diào)函數(shù) //參數(shù):程序名稱 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版會(huì)失敗 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; //創(chuàng)建自己的互斥體對(duì)象 CreateMutexA(NULL,?TRUE,?(LPCSTR)"p1.exe"); //創(chuàng)建線程檢測(cè)對(duì)方的互斥體 CreateThread(NULL,?0,?ThreadCheckProc,?(LPVOID*)"p2.exe",?0,?&Tid); while?(1)?{?Sleep(500);?}; return?0; }
#include?"pch.h" #include?<iostream> #include?<Windows.h> /線程回調(diào)函數(shù) //參數(shù):程序名稱 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版會(huì)失敗 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; //創(chuàng)建自己的互斥體對(duì)象 CreateMutexA(NULL,?TRUE,?(LPCSTR)"p2.exe"); //創(chuàng)建線程檢測(cè)對(duì)方的互斥體 CreateThread(NULL,?0,?ThreadCheckProc,?(LPVOID*)"p1.exe",?0,?&Tid); while?(1)?{?Sleep(500);?}; return?0; }
編譯環(huán)境:vs2017? unicode
修改生成的程序?yàn)閜1.exe,p2.exe,并且p1.exe,p2.exe在同一路徑下,可以實(shí)現(xiàn)簡(jiǎn)單的雙進(jìn)程守護(hù)。
掛起其中的一個(gè)進(jìn)程,可以實(shí)現(xiàn)全部關(guān)閉?;蛘?,迅速關(guān)閉p1.exe,p2.exe亦可。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。