Как проверить, работает ли в моем приложении 2 одинаковых процесса, C++
У меня есть приложение, которое запускает другую копию самого себя, но после того, как приложение запустилось дважды, оно больше не должно запускаться. Это консольное приложение.
Что я уже пробовал:
Я попытался написать это, чтобы проверить, работает ли мое приложение на 2 одинаковых proc.
void checkProcNumber(int cc ,const char* procfilename) { HANDLE hsnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 p32; p32.dwSize = sizeof(p32); BOOL hres = Process32First(hsnap, &p32); while (hres) { if (strcmp(p32.szExeFile, procfilename)==0) { cc ++; } hres = Process32Next(hsnap, &p32); } CloseHandle(hsnap); }
А после этого открыть приложение (в основном)
TCHAR buffer[MAX_PATH] = { 0 }; GetModuleFileName(NULL, buffer, MAX_PATH); string current_path = (buffer); ShellExecute(NULL, "open", current_path.c_str(), NULL, NULL, SW_HIDE);
и наконец это:
int x = 0; checkProcNumber(x, "test.exe"); if (x == 2) { cout << "finish"; Sleep(1000) //and other code to exit from app. }
Проблема в том, что приложение не запускается дважды, а работает бесконечно