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

The current time is: ...
Enter the new time:

然后立即退出而不等待输入。

我不希望该过程在真正完成之前完成,所以我可以通过管道将输入传递给它。我该如何解决这个问题。

我已经建立了这个循环(我仍然希望能够确定何时完成处理):
for (;;)
{
    /* Pipe input and output */
    if (GetExitCodeProcess(...) != STILL_ACTIVE) break;
}

提前致谢。

最佳答案

GetExitCodeProcess不返回STILL_ACTIVESTILL_ACTIVE是通过lpExitCode out参数返回的退出代码。您需要测试返回的退出代码:

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

if (exitCode != STILL_ACTIVE)
{
    break;
}

关于c - 进程尚未完成时,GetExitCodeProcess()返回1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11725958/

10-08 23:18