【3】如何创建独立子进程

在windows编程中往往会需要创建一个子进程,在主进程中调用CreateProcess创建子进程成功后,此时的子进程的进程内核对象和主线程内核对象的使用计数会变成2,这样子进程在理论上不是独立的,虽然windows系统在创建子进程后父子进程的关系会断掉。所以,作为windows程序员需要养成一个好的习惯,那就是在主进程创建子进程后要记得关闭子进程相关句柄

在创建子进程时,CreateProcess函数会接受一个结构体PROCESS_INFORMATION,此结构体在MSDN中如下描述:

typedef struct _PROCESS_INFORMATION { 
HANDLE hProcess; 
HANDLE hThread; 
DWORD dwProcessId; 
DWORD dwThreadId; 
} PROCESS_INFORMATION; 

该结构体会获得子进程的进程内核句柄和主线程内核句柄,那么我们就可以通过CloseHandle函数来关闭这些句柄,来保证子进程的独立性,代码如下:

PROCESS_INFORMATION pi;

BOOL fSuccess = CreateProcess(..., &pi);
if (fSuccess)
{
    CloseHandle(pi.hThread);
    CloseHandle(pi.hProcess);
}

虽然简单,还是得注意哦~~~

你可能感兴趣的:(Windows漫漫路,每日一记,windows,子进程)