当进程尚未完成时,GetExitCodeProcess()返回1

Jor*_*ori 2 c windows api

如果我为它创建一个进程和两个管道集,并且该进程在某个时间需要一些用户输入,GetExitCodeProcess()则Windows C API始终返回1.作为示例,您可以使用Windows time命令,这将返回:

The current time is: ...
Enter the new time:
Run Code Online (Sandbox Code Playgroud)

然后立即退出而无需等待输入.

我不希望这个过程完成,直到它真的完成,所以我可以输入它.我该如何解决这个问题.

我已经构建了这个循环(我仍然希望能够确定何时处理完成):

for (;;)
{
    /* Pipe input and output */
    if (GetExitCodeProcess(...) != STILL_ACTIVE) break;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Jam*_*lis 14

GetExitCodeProcess回来 STILL_ACTIVE ; STILL_ACTIVE是通过lpExitCodeout参数返回的退出代码.您需要测试返回的退出代码:

DWORD exitCode = 0;
if (GetExitCodeProcess(handle, &exitCode) == FALSE)
{
    // Handle GetExitCodeProcess failure
}

if (exitCode != STILL_ACTIVE)
{
    break;
}
Run Code Online (Sandbox Code Playgroud)