我需要捕获子进程的进程终止信号。因此,例如,如果我的Win32控制台应用程序产生一个记事本进程,并且用户关闭记事本,我想检测到这一点。C:其他系统进程的捕获进程终止
我不想阻止(异步模型)
我创建使用取胜API CreateProcess
我需要捕获子进程的进程终止信号。因此,例如,如果我的Win32控制台应用程序产生一个记事本进程,并且用户关闭记事本,我想检测到这一点。C:其他系统进程的捕获进程终止
我不想阻止(异步模型)
我创建使用取胜API CreateProcess
你试过WaitForSingleObject()
与它的dwMilliseconds
参数为0?如果dwMilliseconds
为0,则WaitForSingleObject()
将立即返回,并且如果该过程未死,将返回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 */;
这两个例子是无阻塞
你是如何产卵它,你是模态。也就是说,如果记事本已启动,您仍然可以在控制台应用程序上执行某些操作。 – 2011-12-24 12:32:35
你尝试过'WaitForSingleObject'吗? – cnicutar 2011-12-24 12:35:41
WaitForSingleObject会阻塞。正确? – 2011-12-24 12:44:21