Вы пробовали WaitForSingleObject()
с его dwMilliseconds
параметр как 0? WaitForSingleObject()
немедленно вернется, если dwMilliseconds
равно 0 и вернет WAIT_TIMEOUT
, если процесс не будет мертвым или WAIT_OBJECT_0
если есть.
Пример, предполагая, что дескриптор процесса ребенок hProcess
:
DWORD result = WaitForSingleObject(hProcess, 0);
if (result == WAIT_TIMEOUT)
/* Process not dead */;
else if (result == WAIT_OBJECT_0)
/* Process dead */;
else
/* Error occured */;
И альтернатива GetExitCodeProcess()
. Возвращаемый им «код выхода» будет STILL_ACTIVE
, если он все еще запущен, иначе он вернет фактический код выхода. пример, опять же при условии, дескриптора процесса ребенка hProcess
:
DWORD exitCode;
if (!GetExitCodeProcess(hProcess, &exitCode))
/* Error occured */;
else if (exitCode == STILL_ACTIVE)
/* Process is still running */
else
/* exitCode now contains the process exit code, and the process is not running anymore */;
Оба эти примеры не являются блокирующими
Как вы нерестом, и вы покадрово. То есть, если блокнот поднят, вы все еще можете делать что-то в консольном приложении. –
Вы попробовали 'WaitForSingleObject'? – cnicutar
WaitForSingleObject будет блокироваться. верный? –