我有一個打開的行程句柄和行程的 PID。如果它已經退出,我可以使用這些資訊來獲取行程的狀態嗎?
uj5u.com熱心網友回復:
行程ID相當無用。例如,在針對 POSIX 時,您將不得不使用這種拐杖。
有價值的是程序句柄。例如,您可以使用 等待行程句柄WaitForSingleObject
,或者通過呼叫 請求行程的退出代碼GetExitCodeProcess
。
任一 API 呼叫都能夠報告行程是否已終止。假設這hProcess
是行程句柄,以下兩個片段會生成一個值,指示行程是否已終止:
bool terminated = ::WaitForSingleObject(hProcess, 0) == WAIT_OBJECT_0;
DWORD exit_code{};
bool terminated = ::GetExitCodeProcess(hProcess, &exit_code) &&
(exit_code != STILL_ACTIVE);
請注意,第一個選項更健壯。第二個選項無法區分仍在運行的行程和已終止但將退出代碼設定為STILL_ACTIVE
(259) 的行程。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/512745.html
標籤:温纳皮
上一篇:我如何知道用戶何時可以使用強制滾動條滾動RichTextBox
下一篇:Win32API子視窗閃爍