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

   2025-02-13 7920
核心提示:`CreateProcess` 函数可以用于创建一个独立的进程。为了确保新进程不是作为当前进程的子进程创建的,您需要将 `bInheritHandles`

`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` 参数应替换为您实际要执行的可执行文件路径或命令行参数。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言