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

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

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

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

===============>>#1 票数:4 已采纳

你不必等待子进程结束,你只需要CloseHandle ,当不再需要手柄。

这样做的原因是,即使在完成该过程之后,您可能仍希望保持对该过程的处理。 例如,您可能想要检查其返回状态。 只要你有一个句柄,Windows就无法清理它。

但如果您不再关心孩子的行为,请关闭手柄并继续前进。

如果你关心,请调用WaitForSingleObject并为其提供从CreateProcess获得的句柄。 或者使用将在进程结束时调用的回调函数调用RegisterWaitForSingleObject (再次将其传递给进程句柄)。

  ask by user14416 translate from so

未解决问题?本站智能推荐: