调用CreateProcess()之后,如何等待子进程初始化完毕。

因为CreateProcess()是在创建线程之后立刻返回的,所以可能并没有等到进程开始执行。

使用WaitForInputIdle函数,就可以等待到进程等待输入的时候返回。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个关于操作系统的问题。你可以使用以下代码来创建一个进程并获取相关信息: ```c++ #include <windows.h> #include <iostream> int main() { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); // Create the process if (!CreateProcess(NULL, // No module name (use command line) "C:\\Windows\\System32\\notepad.exe", // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags NULL, // Use parent's environment block NULL, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi) // Pointer to PROCESS_INFORMATION structure ) { std::cout << "CreateProcess failed (" << GetLastError() << ").\n"; return 1; } // Wait until child process exits. WaitForSingleObject(pi.hProcess, INFINITE); // Get the exit code of the process DWORD exitCode; if (!GetExitCodeProcess(pi.hProcess, &exitCode)) { std::cout << "Failed to get exit code of process (" << GetLastError() << ").\n"; } else { std::cout << "Exit code of process: " << exitCode << ".\n"; } // Close process and thread handles. CloseHandle(pi.hProcess); CloseHandle(pi.hThread); return 0; } ``` 这段代码会创建一个新的进程,启动记事本应用程序。通过调用 `CreateProcess` 函数,我们可以传递参数来指定要创建的进程和它的启动方式。在这个例中,我们使用了 `notepad.exe` 作为要启动的程序。 在创建进程之后,我们需要等待进程退出,然后使用 `GetExitCodeProcess` 函数获取进程的退出码。最后,我们需要关闭进程和线程的句柄,以释放相应的资源。 希望这个例对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值