C で Windows 実行可能ファイルを起動および管理するための ::CreateProcess の呼び出し
この記事では、C で ::CreateProcess 関数を利用する方法を説明します。 Windows 実行可能ファイルを起動し、完了を待ち、終了を正しく処理します。
実行可能ファイルの起動
::CreateProcess 関数は、実行可能ファイルのパスを含むいくつかのパラメータを受け入れます。そしてコマンドライン引数。 EXE を起動するには、パス パラメーターで実行可能ファイルへのパスを指定します。
<code class="cpp">STARTUPINFO info = { sizeof(info) }; PROCESS_INFORMATION processInfo; if (CreateProcess("C:\path\to\my.exe", NULL, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo)) { // Executable successfully launched } else { // Handle launch failure }</code>
完了を待機中
実行可能ファイルが終了するのを待つには、 processInfo.hProcess を待機ハンドルとして使用する WaitForSingleObject 関数:
<code class="cpp">WaitForSingleObject(processInfo.hProcess, INFINITE);</code>
これにより、プロセスが終了するまで現在のスレッドがブロックされます。
プロセス終了の処理
実行可能ファイルが終了したら、プロセスとスレッドのハンドルを閉じて、システム リソースを適切に解放します。
<code class="cpp">CloseHandle(processInfo.hProcess); CloseHandle(processInfo.hThread);</code>
サンプル コード
すべてをまとめると、次のコードは、EXE を起動し、その完了を待ち、プロセス終了を処理する方法を示しています。
<code class="cpp">STARTUPINFO info = { sizeof(info) }; PROCESS_INFORMATION processInfo; if (CreateProcess("C:\path\to\my.exe", NULL, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo)) { WaitForSingleObject(processInfo.hProcess, INFINITE); CloseHandle(processInfo.hProcess); CloseHandle(processInfo.hThread); }</code>
このコードは、指定された EXE を起動し、完了するのを待ってから、すべてのハンドルを適切に閉じます。適切なクリーンアップとリソースの割り当て解除を確保します。
以上がC の ::CreateProcess を使用して Windows 実行可能ファイルを起動および管理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。