1

我在 c++ 中有一个 XMLRPC windows 服务。我需要从中启动子进程,如果 Windows 服务收到请求并且进程已经存在,我需要结束该特定子进程并再次启动它。我不需要在启动后等待进程退出,但是一旦它启动并开始它应该做的事情,我需要通知主进程。当子进程结束时,它需要通知启动它的服务,以便我可以维护已存在哪些进程的列表。我知道我可以用CreateProcess做到这一点,但是一旦到达特定的事情 n 子进程,我该如何处理通知方面的问题。

4

2 回答 2

5

调用后CreateProcess,跟踪进程句柄。您可以使用它来查看进程是否已退出TerminateProcess,并在必要时调用。

您甚至可以将所有句柄保存在一个数组中,然后WaitForMultipleObjects只要任何一个子进程退出,一次调用就会让您知道。

于 2013-09-13T21:24:31.707 回答
2

如果子进程需要通知主进程某事,那么您可以使用其中一种进程间通信机制。当然,这假设您正在为子进程编写代码。如果您只需要知道子进程何时开始和结束,那么如上一个答案中所述,您可以使用CreateProcess和其中一个等待函数您可以使用TerminateProcess停止子进程但这不是停止进程的优雅方法(您可能会在重要的事情中间停止它),停止子进程的更温和的方法是通知子进程您希望它停止(使用进程间通信机制),然后等待它自行停止。哦,我忘了解释,您可以通过将进程的句柄传递给等待函数之一来等待进程结束。

于 2013-09-13T21:51:15.610 回答