首頁 > 後端開發 > C++ > 主體

如何在 C 中使用 ::CreateProcess 啟動和管理 Windows 執行檔?

Mary-Kate Olsen
發布: 2024-11-02 13:02:29
原創
275 人瀏覽過

How to Launch and Manage Windows Executables with ::CreateProcess in C  ?

在C 語言中呼叫::CreateProcess 來啟動和管理Windows 執行檔

本文將示範如何在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>
登入後複製

等待完成

要等待執行檔完成,請呼叫WaitForingleSObject 函數以processInfo.hProcess 作為等待句柄:

<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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!