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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值