1

我使用 Windows APICreateProcess函数。在它的msdn手册中,我发现

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

那么我应该在哪里做呢?

情况是进程开始了,他的生活没有踪迹。它是否迫使我创建一个线程,将在其中创建进程,然后线程将等待使用,例如WaitForSingleObject,直到进程死亡,因此可以释放句柄?

4

1 回答 1

4

您不必等待子进程完成,您只需要在不再需要句柄CloseHandle时等待。

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

但是,如果您不再关心孩子做了什么,请关闭把手并继续前进。

如果你真的在乎,打电话WaitForSingleObject给它你从那里得到的句柄CreateProcess。或者调用RegisterWaitForSingleObject(再次将进程句柄传递给它)使用将在进程结束时调用的回调函数。

于 2013-04-17T22:08:23.980 回答