1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
STARTUPINFO siStartupInfo;
PROCESS_INFORMATION piProcessInfo;
HANDLE childprocess;
memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
printf("Running parent process...\n");
siStartupInfo.cb = sizeof(siStartupInfo);
if(CreateProcess(NULL,process_name,0,0,FALSE,
CREATE_DEFAULT_ERROR_MODE,0,0,
&siStartupInfo,&piProcessInfo) == FALSE)
{ printf("Fail to get parent process...\n");
exit(1); }
else
{ // wait
WaitForSingleObject(piProcessInfo.hProcess, INFINITE);
// close handle
::CloseHandle(piProcessInfo.hThread);
::CloseHandle(piProcessInfo.hProcess);
// get child process launched
childprocess = GetCurrentProcess();
WaitForSingleObject(childprocess, INFINITE);
// close handle
::CloseHandle(childprocess);
} |
Partager