CreateProcess()
によって作成されたプロセスがある場合、それがまだ実行されているかどうかをどのように判断できますか?私はpi.hProcess
を使用する必要があることを知っているが、私はどのようにわからないし、Googleは本当に意味のあるヒントを与えていない。CreateProcessで開始したプロセスがまだ実行されているかどうかを確認するには?
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);
プロセスが実際の終了コードとして 'STILL_ACTIVE'(259)を返すとどうなりますか? – zett42
@ zett42:それは可能性があり、ドキュメンテーションが警告するもの: "***重要** GetExitCodeProcess関数は、スレッドが終了した後にのみアプリケーションによって定義された有効なエラーコードを返します。したがって、アプリケーションはスレッドがエラーコードとして 'STILL_ACTIVE'(259)を返した場合、この値をテストするアプリケーションは、スレッドがまだ実行中であることを意味すると解釈して、スレッドが終了した後にスレッドが完了すると、アプリケーションが無限ループになる可能性があります。* " –
@Remyこれは他のプロセスの協力が必要なので一般的な解決策ではありません。代わりに0タイムアウトで 'WaitForSingleObject()'を使うのが良いでしょう。 – zett42