在Windows上的select.select中使用sys.stdin

Bri*_*ner 7 python windows winapi network-programming

可能重复:
可以选择()与Windows下的Python文件一起使用吗?

在UNIX我能够传递sys.stdinselect.selectPython中.我试图在Windows上执行此操作,但select.select在Windows上的Python将不允许它.

为了更准确地描述我在做什么,请参阅https://github.com/eldarion/gondor-client/blob/ccbbf9d4b61ecbc2f66f510b993eb5fba0d81c09/gondor/run.py.

unix_run_poll功能是我想在Windows上完成的功能.基本的想法是我有一个到服务器的套接字连接,它已经将stdin,stdout,stderr连接到远程运行的进程,我正在从本地客户端与它进行交互,并使其看起来好像本地客户端正在运行处理.

win32_run_poll是我尝试将其移植到Windows,它确实有效.这有点不稳定,IMO的做法非常糟糕.

有没有人就如何改进这方面提出建议?对win32api的依赖程度不太理想,但我可以保留它.

dna*_*naq 7

在Windows select上仅为套接字定义,并且不适用于任意文件句柄(窗口没有文件描述符的概念).有关此问题的更多信息,请参阅msdn文档,它在python文档中也提到了select模块.

如果要对任意文件使用轮询,则应该查看抽象轮询套接字和文件句柄的内容.这可能是对你的帖子的评论中引用的扭曲反应器,或者它可能是与libuv的python绑定,或者你选择的其他一些事件库.