温馨提示×

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

小亿
103
2023-12-20 14:30:52
栏目: 编程语言

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

0