Вы можете поместить глобальный именованный мьютекс вокруг вашего вызова CreateProcess
, а затем попытаться захватить мьютекс в дочернем процессе. Если вы затем поставили точку останова на вызове CreateProcess
, у вас должно быть время присоединиться к ребенку, прежде чем он сделает что-то существенное.
Обратите внимание, что вы пропустите все, что происходит до main
в дочернем процессе.
edit: Например, что-то вроде этого, не проверено:
// parent.cpp
HANDLE hMutex = ::CreateMutex(NULL, TRUE, "Global\\some_guid");
::CreateProcess(...);
::ReleaseMutex(hMutex); // breakpoint here
::CloseHandle(hMutex);
// child.cpp
int main(...)
{
HANDLE hMutex = ::OpenMutex(MUTEX_ALL_ACCESS, FALSE, "Global\\some_guid");
::WaitForSingleObject( hMutex, INFINITE );
::CloseHandle(hMutex);
...
}
Возможно, вы захотите обернуть его с помощью #if _DEBUG
или проверки переменных среды.