我需要捕獲子進程的進程終止信號。因此,例如,如果我的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