如何用CreateProcess函数创建独立的进程而不是子进程

avatar
作者
猴君
阅读量:8

`CreateProcess` 函数可以用于创建一个独立的进程。为了确保新进程不是作为当前进程的子进程创建的,您需要将 `bInheritHandles` 参数设置为 `FALSE` 并提供一个独立的进程空间。以下是创建独立进程的示例代码:

#include  #include  int main() {     STARTUPINFO si = { sizeof(si) };     PROCESS_INFORMATION pi;     // 创建独立的进程     BOOL success = CreateProcess(         nullptr,                     // 模块名(可执行文件路径)         const_cast("command"), // 命令行参数         nullptr,                     // 进程句柄不可继承         nullptr,                     // 线程句柄不可继承         FALSE,                       // 不继承句柄         CREATE_NEW_PROCESS_GROUP |    // 创建一个新的进程组         CREATE_UNICODE_ENVIRONMENT,  // 使用Unicode环境变量         nullptr,                     // 使用父进程环境变量         nullptr,                     // 使用父进程工作目录         &si,                         // 启动信息         &pi                          // 进程信息     );     if (success) {         std::cout << "Independent process created." << std::endl;                  // 关闭不再使用的句柄         CloseHandle(pi.hProcess);         CloseHandle(pi.hThread);     } else {         std::cerr << "Failed to create independent process." << std::endl;     }     return 0; }

在上述示例中,我们将 `bInheritHandles` 参数设置为 `FALSE` 并使用 `CREATE_NEW_PROCESS_GROUP` 标志创建了一个新的进程组。这样可以确保新进程是独立于当前进程的。

注意:`command` 参数应替换为您实际要执行的可执行文件路径或命令行参数。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!