如何判断从 CreateProcess 启动的进程是否仍在运行
How to tell if a process started with CreateProcess is still running?
如果我通过CreateProcess()
创建了一个进程,我将如何确定它是否仍在运行?我知道我需要使用pi.hProcess
但我不知道怎么做,谷歌并没有真正给我有意义的提示。
PROCESS_INFORMATION pi;
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
bool got_it=CreateProcess(NULL, CA2T(launchString.c_str()), NULL, NULL, false, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
您可以使用任何标准的等待函数,例如 WaitForSingleObject()
,例如:
switch (WaitForSingleObject(pi.hProcess, 0))
{
case WAIT_OBJECT_0:
// process has terminated...
break;
case WAIT_TIMEOUT:
// process is still running...
break;
}
您可以使用 GetExitCodeProcess()
检索进程的退出代码,如果进程仍在运行,它将给出特殊的STILL_ACTIVE
值:
DWORD exit_code;
GetExitCodeProcess(pi.hProcess, &exit_code);
if (exit_code == STILL_ACTIVE) {
}
相关文章:
- 由 JOB 中的进程启动的子进程是否可以将 JOB 属性设置为脱离作业?
- 通过 pid 窗口判断进程是否存在
- 多个线程/进程是否可以在不同步的情况下同时从/写入文件的非重叠区域?
- 如何检查进程是否在C++中运行?
- 如何判断从 CreateProcess 启动的进程是否仍在运行
- (LINX-IPC 协议)如何确定具有 PID 的进程是否在C++中运行
- 等待() 等待进程是否消耗系统 CPU
- 无法检测子进程是否已终止
- Linux - 查找进程是否已准备就绪或正在运行
- 检查给定进程是否正在运行
- 检查特定进程是否正在运行的快速方法
- SYSTEM进程是否可以与非SYSTEM进程共享数据
- 是否可以使用带有错误代码的OpenProcess ERROR_ACCESS_DENIED来了解进程是否存在
- 如何检查进程是否具有图形界面(没有 .NET)
- 检查进程是否存在
- 如何按进程名称检查 mac 进程是否存在
- Boost.进程检查进程是否终止
- 检测 Linux 下的 32 位进程是否在 64 位环境中运行
- 如何检测进程是否正在调试
- 检查相邻从进程是否在MPI中结束