【问题标题】:Windows poll or select on Named pipeWindows 轮询或选择命名管道
【发布时间】:2010-10-12 04:53:33
【问题描述】:

我可以在 Windows 中的命名管道句柄上使用 select 和 poll 吗?如果能举个例子就好了。 (我对 Windows 编程很陌生)

如果一个进程出现故障而我在另一端进行轮询,我是否会在另一个进程上收到任何进程已停机的错误消息?

【问题讨论】:

  • 你偷看管道上的数据吗?

标签: pipe named-pipes winapi windows


【解决方案1】:

很遗憾没有。 Windows 通过重叠的 I/O 和 I/O 完成端口促进了两种不同的模式,用于异步通信。

简而言之,重叠 I/O 会在 I/O 操作完成时短暂接收回调。当 I/O 操作完成时,IOCP 会在 端口 上接收事件,并允许应用程序同时扩展对多个套接字的处理。

http://en.wikipedia.org/wiki/Iocp

最坏的情况是您可以将 IOCP 线程固定到命名管道上并通过 socketpair 生成事件以在 selectWSAPoll 中处理。

【讨论】:

    【解决方案2】:

    如果您在管道上进行非阻塞读取,则管道另一端的关闭(由于进程失败)将导致该读取返回,并出现错误。

    如果您正在执行阻塞读取,则读取将失败,因为管道已断开连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-10
      • 2010-12-18
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多