3

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

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

然后立即退出,无需等待输入。

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

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

for (;;)
{
    /* Pipe input and output */
    if (GetExitCodeProcess(...) != STILL_ACTIVE) break;
}

提前致谢。

4

1 回答 1

16

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

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

if (exitCode != STILL_ACTIVE)
{
    break;
}
于 2012-07-30T16:52:30.047 回答