Windows服务程序中退出功能的影响

时间:2009-11-20 15:28:55

标签: c++ windows

我有一个Windows服务程序。它由StartServiceCtrlDispatcher函数启动。它的网络服务器接受用户的输入作为控制目的的命令。现在,我希望它能够被用户关闭,即当用户键入“退出”命令时,服务将停止。 (不要担心如何再次启动服务。)我可以在标准库中使用“exit”功能还是需要使用“ControlService”功能?

1 个答案:

答案 0 :(得分:2)

您应该使用ControlService()函数来停止服务,然后正常返回程序流程,如果这也会导致进程退出。

ControlService Function @ MSDN

exit()将导致进程终止,这肯定会终止托管1个服务的进程。但是,这对于在托管多个服务的进程中停止服务是不合需要的。此外,如果您使用exit(),则监视您的服务的其他观察者是否会收到服务停止的优雅通知,这是未定义的。如果使用exit(),则进程中可能已加载的其他操作库也可能无法正确停止。

exit, _exit @ MSDN