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

2024-06-01 03:27:43 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
Can select() be used with files in Python under Windows?

在UNIX上,我可以用Python将sys.stdin传递给select.select。我试图在Windows上这样做,但是在Python中,Windows上的select.select不允许这样做。

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

我正试图在Windows上实现unix_run_poll函数。基本思想是,我有一个到服务器的socket连接,该服务器将流stdin、stdout、stderr连接到远程运行的进程,并且我从本地客户端与它进行交互,使其看起来好像本地客户端正在运行该进程。

win32_run_poll是我尝试将其移植到Windows的尝试,它确实可以工作,有点像。这是一个有点不稳定的方法,我认为,是非常糟糕的。

有人对如何改进这一点有什么建议吗?对win32api的依赖性不太理想,但我可以保留它。


Tags: run服务器客户端进程windowswithstdinbe
1条回答
网友
1楼 · 发布于 2024-06-01 03:27:43

在Windows上,select只为套接字定义,不适用于任意文件句柄(Windows没有文件描述符的概念)。有关此问题的详细信息,请参见the msdn documentation,select模块的python documentation中也提到了此问题。

如果您想对任意文件使用轮询,应该研究一些抽象的轮询套接字和文件句柄。这可能是在您的文章的注释中提到的扭曲反应器,也可能是到libuv的python绑定,或者您选择的其他事件库。

相关问题 更多 >