3

プロセスとそのための 2 つのパイプ セットを作成し、そのプロセスが特定の時点でユーザー入力を必要とする場合GetExitCodeProcess()、Windows C API の は always を返します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_ACTIVE。out パラメータSTILL_ACTIVEを介して返される終了コードです。lpExitCode返された終了コードをテストする必要があります。

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

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