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

来源:互联网 发布:知豆电动汽车是吉利 编辑:程序博客网 时间:2024/04/29 09:54

在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);}

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

0 0
原创粉丝点击