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

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

在UNIX上,我能够将sys.stdin传递给Python中的select.select 。 我正在尝试在Windows上执行此操作,但在Windows上的Python select.select将不允许执行此操作。

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

unix_run_poll函数是我正在尝试在Windows上完成的。 基本的想法是,我有一个套接字连接到一个服务器,已经连接streamstdin,标准输出,stderr到远程运行的进程,我正在与本地客户端交互,使它看起来好像本地客户端正在运行处理。

win32_run_poll是我将它移植到Windows上的尝试,它确实有效。 这是一个有点不可思议的方法,国际海事组织,是非常糟糕的。

有没有人有这样的build议可以改善? 对win32api的依赖是不太理想的,但我没有保留它。

在Windows上, select仅仅是为套接字定义的,并不适用于任意文件句柄(windows没有文件描述符的概念)。 有关此问题的更多信息,请参见msdn文档 ,在选择模块的python文档中也提到了这一点。

如果你想使用轮询来处理任意的文件,你应该查看一些抽象的轮询套接字和文件句柄。 这可能是你的文章的评论中提到的扭曲的反应堆,或者它可能是一个绑定到libuv的python,或者你选择的其他事件库。