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

时间:2012-09-19 17:04:53

标签: python windows winapi network-programming

  

可能重复:
  Can select() be used with files in Python under Windows?

在UNIX上,我可以在Python中将sys.stdin传递给select.select。我试图在Windows上执行此操作,但Windows上的Python中的select.select将不允许它。

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

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

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

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

1 个答案:

答案 0 :(得分:7)

在Windows上select仅为套接字定义,并且不适用于任意文件句柄(窗口没有文件描述符的概念)。有关此问题的详细信息,请参阅the msdn documentationpython documentation中也会提及select模块。

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

相关问题