首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从windows服务启动子进程。

从windows服务启动子进程。
EN

Stack Overflow用户
提问于 2013-09-13 20:58:21
回答 2查看 1.2K关注 0票数 1

我在c++中有一个服务。我需要从它启动进程,如果windows服务收到了请求,并且进程已经存在,我需要结束特定的子进程并再次启动它。我不需要等待进程在启动后退出,但一旦启动和启动它应该做什么,我需要通知主进程。当子进程结束时,它需要通知启动它的服务,以便我能够维护已经存在的进程的列表。我知道我可以用CreateProcess来完成这个任务,但是一旦到达子进程,我如何处理通知的各个方面。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-13 21:24:31

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

您甚至可以将所有句柄保存在一个数组中,然后只要有一个子进程退出,对WaitForMultipleObjects的单个调用就会通知您。

票数 5
EN

Stack Overflow用户

发布于 2013-09-13 21:51:15

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18795131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档