首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何才能知道Windows中的进程是否已退出?

如何才能知道Windows中的进程是否已退出?
EN

Stack Overflow用户
提问于 2022-10-08 09:48:39
回答 1查看 57关注 0票数 0

我有一个开放的进程句柄和PID的进程。如果进程是否已退出,我是否可以使用此信息获取进程的状态?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-08 10:16:52

进程ID是相当无用的。例如,当你瞄准POSIX时,你会被迫使用这种拐杖。

过程处理是很有价值的。例如,您可以使用WaitForSingleObject等待进程句柄,也可以通过调用GetExitCodeProcess请求进程的退出代码。

任何一个API调用都能够报告进程是否已经结束。假设hProcess是进程句柄,下面的两个片段生成一个值,该值指示进程是否已终止:

代码语言:javascript
运行
复制
bool terminated = ::WaitForSingleObject(hProcess, 0) == WAIT_OBJECT_0;
代码语言:javascript
运行
复制
DWORD exit_code{};
bool terminated = ::GetExitCodeProcess(hProcess, &exit_code) &&
                  (exit_code != STILL_ACTIVE);

请注意,第一个选项更健壮。第二个选项不能区分仍在运行的进程和已终止但将退出代码设置为STILL_ACTIVE (259个)的进程。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73995991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档