如何优雅地停止正在侦听Windows上的管道的服务器进程
发布时间:2020-12-14 04:37:03 所属栏目:Windows 来源:网络整理
导读:我有一个类似于 http://msdn.microsoft.com/en-us/library/windows/desktop/aa365588(v=vs.85).aspx的MSDN示例的命名管道服务器,并希望允许客户端发送“退出”消息,导致服务器正常停止. 所以在“InstanceThread()”中,如果收到特殊消息,我想让服务器停止. 我
我有一个类似于
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365588(v=vs.85).aspx的MSDN示例的命名管道服务器,并希望允许客户端发送“退出”消息,导致服务器正常停止.
所以在“InstanceThread()”中,如果收到特殊消息,我想让服务器停止. 我试图通过关闭管道句柄来停止对主线程中的ConnectNamedPipe()来自“InstanceThread()”的单独线程,但是这不起作用. 我已经尝试了各种各样的东西,其中包括关闭整个管道,直接从InstanceThread退出,但是它们都没有导致对ConnectNamedPipe()的调用停止. 我使用了SetNamedPipeHandleState(),但它使实现变得非常复杂,同样使用重叠的I / O对于这个简单的要求来说似乎有些过分. 那么,当服务器进程停止而不是无休止地等待客户端连接时,是否有更简单的方法让ConnectNamedPipe()返回? 解决方法
如果您不需要支持Windows XP,可以尝试使用
CancelSynchronousIo.
如果流程退出,您不需要做任何事情;当Windows取消进程时,该线程将被终止. 或者,您可以通过自己连接到命名管道来调用ConnectNamedPipe退出. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows Server 2012 R2无法使用GUI服务器管理器安装任何角
- 如何将两个windows vc静态库合并为一个
- 如何在Windows上获取视频捕获设备(网络摄像头)列表? (C )
- windows-8 – 如何本地化Windows商店的应用程序的显示名称?
- ffmpeg windows下编译安装
- EXTJS Ext.Window Scroll
- wpf – App xaml假设实例化的第一个窗口是主窗口(showdialo
- 有一个WPF与System.Windows.Forms.Screen等同吗?
- Windows – Win32 ToolTip消失,永远不会重新出现在Commctl
- windows – 如何查找映射驱动器的可用空间百分比?
推荐文章
站长推荐
热点阅读