【发布时间】:2010-10-12 04:53:33
【问题描述】:
我可以在 Windows 中的命名管道句柄上使用 select 和 poll 吗?如果能举个例子就好了。 (我对 Windows 编程很陌生)
如果一个进程出现故障而我在另一端进行轮询,我是否会在另一个进程上收到任何进程已停机的错误消息?
【问题讨论】:
-
你偷看管道上的数据吗?
标签: pipe named-pipes winapi windows
我可以在 Windows 中的命名管道句柄上使用 select 和 poll 吗?如果能举个例子就好了。 (我对 Windows 编程很陌生)
如果一个进程出现故障而我在另一端进行轮询,我是否会在另一个进程上收到任何进程已停机的错误消息?
【问题讨论】:
标签: pipe named-pipes winapi windows
很遗憾没有。 Windows 通过重叠的 I/O 和 I/O 完成端口促进了两种不同的模式,用于异步通信。
简而言之,重叠 I/O 会在 I/O 操作完成时短暂接收回调。当 I/O 操作完成时,IOCP 会在 端口 上接收事件,并允许应用程序同时扩展对多个套接字的处理。
http://en.wikipedia.org/wiki/Iocp
最坏的情况是您可以将 IOCP 线程固定到命名管道上并通过 socketpair 生成事件以在 select 或 WSAPoll 中处理。
【讨论】:
如果您在管道上进行非阻塞读取,则管道另一端的关闭(由于进程失败)将导致该读取返回,并出现错误。
如果您正在执行阻塞读取,则读取将失败,因为管道已断开连接。
【讨论】: