gpt4 book ai didi

windows - 如何优雅地停止正在监听 Windows 管道的服务器进程

转载 作者:可可西里 更新时间:2023-11-01 13:58:15 31 4
gpt4 key购买 nike

我有一个命名管道服务器,类似于 http://msdn.microsoft.com/en-us/library/windows/desktop/aa365588(v=vs.85).aspx 的 MSDN 示例并希望允许客户端发送“退出”消息,使服务器正常停止。

所以在“InstanceThread()”中,如果收到特殊消息,我想让服务器停止。

我试图通过关闭管道句柄来停止从“InstanceThread()”的单独线程在主线程中调用 ConnectNamedPipe(),但这不起作用。

我已经尝试过各种方法,其中包括关闭整个管道、直接从 InstanceThread 退出,...但它们都不会导致对 ConnectNamedPipe() 的调用停止。

我玩过 SetNamedPipeHandleState(),但它使实现变得非常复杂,而且使用重叠 I/O 对于这个简单的要求来说似乎有些过分了。

那么有没有更简单的方法让 ConnectNamedPipe() 在服务器进程应该停止时返回,而不是无休止地等待客户端连接?

最佳答案

如果您不需要支持 Windows XP,您可以尝试使用 CancelSynchronousIo .

如果进程正在退出,你不需要做任何事情;当 Windows 终止进程时,线程将终止。

或者,您可以调用电话 ConnectNamedPipe只需自己连接到命名管道即可退出。

关于windows - 如何优雅地停止正在监听 Windows 管道的服务器进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11650802/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com