我有一个开放的进程句柄和PID的进程。如果进程是否已退出,我是否可以使用此信息获取进程的状态?
发布于 2022-10-08 10:16:52
进程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://stackoverflow.com/questions/73995991
复制相似问题