没有 boost::process::launch_info
时间: 2024-11-06 16:14:15 浏览: 30
如果你没有`boost::process::launch_info`这个工具,你可以直接使用`CreateProcess`函数来自C++来启动子进程,这是Windows API的一部分。这是一个简单的例子,假设你要启动一个名为`notepad.exe`的程序:
```cpp
#include <windows.h>
// 定义进程启动信息
STARTUPINFO si = {0};
PROCESS_INFORMATION pi = {0};
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW; // 显示窗口
si.wShowWindow = SW_HIDE; // 隐藏窗口
// 子进程路径和参数
LPWSTR cmdLine[] = {L"notepad.exe", L"", NULL}; // 这里假设notepad.exe位于系统路径下
// 执行CreateProcess
if (!CreateProcess(cmdLine[0], NULL, NULL, NULL, FALSE,
DETACHED_PROCESS | CREATE_NO_WINDOW, NULL, NULL, &si, &pi))
{
// 处理错误
DWORD error = GetLastError();
printf("Failed to create child process: %u\n", error);
return 1;
}
// 进程ID可用于后续跟踪或管理
printf("Child process ID: %d\n", pi.dwProcessId);
// 现在子进程已经独立运行了
CloseHandle(pi.hThread); // 关闭线程句柄
WaitForSingleObject(pi.hProcess, INFINITE); // 如果需要,可以等待子进程结束
return 0;
```
在这个示例中,`CreateProcess`函数负责创建新的进程以及设置其属性,如隐藏窗口。`DETACHED_PROCESS`标志确保子进程独立于父进程运行。
阅读全文