CreateProcess处理

时间:2013-04-17 22:06:46

标签: c++ windows

我使用Windows API CreateProcess功能。在msdn手册中,我找到了

  

如果函数成功,请确保在完成后调用CloseHandle函数关闭hProcess和hThread句柄。否则,当子进程退出时,系统无法清除子进程的进程结构,因为父进程仍然具有子进程的打开句柄。

所以我应该在哪里这样做?

情况是这个过程已经开始,并且没有他的生命轨迹。它是否强制我创建一个线程,在那里创建进程然后线程将等待使用,例如WaitForSingleObject,直到进程停止,因此句柄可以被释放?

1 个答案:

答案 0 :(得分:4)

您不必等待子流程完成,当不再需要处理时,您只需CloseHandle

这样做的原因是,即使在该过程完成后您也可能希望保留该过程的句柄。例如,您可能想要检查其返回状态。只要你掌握了它,Windows就无法清理它。

但如果你不再关心孩子做了什么,请关上手柄继续前进。

如果您小心翼翼,请致电WaitForSingleObject并为其提供CreateProcess提供的句柄。或者使用将在进程结束时调用的回调函数调用RegisterWaitForSingleObject(再次传递进程句柄)。