在 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>
等待完成
要等待可执行文件完成,请调用WaitForSingleObject 函数以 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中文网其他相关文章!