我最近尝试编写代码来检查Windows中的线程是否存在。我搜索了这个论坛,发现了类似的讨论:How to check if a process or thread is alive or not given their IDs in C++?。
我知道我可以使用OpenThread API。但是它似乎在我的代码中不起作用如下。
DWORD WINAPI myThread( LPVOID lpParam )
{
cout<<"child thread"<<endl;
return 0;
}
int main(void)
{
DWORD lTldID = 0;
HANDLE lTldHD = CreateThread(NULL, 0, myThread, 0, 0, &lTldID);
WaitForSingleObject(lTldHD, INFINITE);
HANDLE lHD = OpenThread(0x0040, FALSE, lTldID);
return 1;
}
我希望HANDLE lHD应为NULL,因为线程'myThread'应该在调用OpenThread()时完成。但是,我总是得到像0x00000068这样的非NULL值。我不知道为什么会这样。有什么想法吗?
谢谢, Xiaomo
答案 0 :(得分:0)
BOOL WINAPI GetExitCodeThread(
_In_ HANDLE hThread,
_Out_ LPDWORD lpExitCode
);
此功能立即返回。如果指定的线程尚未终止且函数成功,则返回的状态为STILL_ACTIVE
。