Windows下创建子进程
时间: 2024-05-03 21:17:52 浏览: 65
在 Windows 下,可以使用 CreateProcess 函数来创建子进程。具体步骤如下:
1. 定义 STARTUPINFO 和 PROCESS_INFORMATION 结构体变量,用于存储进程信息和启动信息。
2. 调用 CreateProcess 函数,传入要执行的程序路径和命令行参数、进程安全描述符等参数,创建子进程。
3. 等待子进程执行完毕,可以使用 WaitForSingleObject 或 WaitForMultipleObjects 函数等待进程结束。
4. 获取子进程的退出码,可以使用 GetExitCodeProcess 函数来获取子进程的退出码。
以下是一个简单的示例代码:
```c++
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
int _tmain(int argc, TCHAR* argv[])
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
// 启动计算器程序
if (!CreateProcess(NULL, // 没有指定可执行文件名
_T("calc.exe"), // 要执行的程序路径
NULL, // 默认进程安全描述符
NULL, // 默认线程安全描述符
FALSE, // 不继承句柄
0, // 默认标志
NULL, // 不使用环境变量
NULL, // 默认工作目录
&si,
&pi))
{
printf("CreateProcess failed (%d).\n", GetLastError());
return 1;
}
// 等待子进程结束
WaitForSingleObject(pi.hProcess, INFINITE);
// 获取子进程退出码
DWORD exitCode = 0;
GetExitCodeProcess(pi.hProcess, &exitCode);
printf("Child process exited with code %d.\n", exitCode);
// 关闭句柄
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return 0;
}
```
这个程序会启动计算器程序,等待计算器程序结束,然后输出子进程的退出码。
阅读全文