我在c++中有一个服务。我需要从它启动进程,如果windows服务收到了请求,并且进程已经存在,我需要结束特定的子进程并再次启动它。我不需要等待进程在启动后退出,但一旦启动和启动它应该做什么,我需要通知主进程。当子进程结束时,它需要通知启动它的服务,以便我能够维护已经存在的进程的列表。我知道我可以用CreateProcess来完成这个任务,但是一旦到达子进程,我如何处理通知的各个方面。
发布于 2013-09-13 21:24:31
调用CreateProcess后,跟踪进程句柄。您可以使用它查看流程是否具有退出与否,并在必要时调用TerminateProcess。
您甚至可以将所有句柄保存在一个数组中,然后只要有一个子进程退出,对WaitForMultipleObjects的单个调用就会通知您。
发布于 2013-09-13 21:51:15
如果子进程需要通知主进程,那么您可以使用进程间通信机制之一。当然,这假定您正在为子进程编写代码。如果您只需要知道子进程何时开始和结束,那么,正如前面的答案所述,您可以使用CreateProcess和等待函数之一。您可以使用TerminateProcess来停止子进程,但是这不是停止进程的一种优雅方式(您可能会在重要的事情中停止它),停止子进程的一种更温和的方法是通知子进程您希望它停止(使用进程间通信机制),然后等待它自己停止。哦,我忘了解释,您可以通过将句柄传递给进程的一个等待函数来等待进程结束。
https://stackoverflow.com/questions/18795131
复制相似问题