【发布时间】:2018-07-22 05:06:00
【问题描述】:
我通过 ssh 使用远程 linux 服务器,所以我没有超级用户权限。但是/dev/fd中挂载的文件描述符还不够:
user >ls /dev/fd/
0 1 2
或:
user >ls /proc/self/fd
0 1 2
而我想要的是添加新的文件描述符,这样我就可以通过这种方式重定向输出流:
user >./main.exe 1>1.txt 2>2.txt 3>3.txt ...
由于文件描述符不够,无法创建/dev/fd/3之类的文件描述符,触发了错误:
IOError: [Errno 2] No such file or directory: '/dev/fd/3'
【问题讨论】:
-
另见Use multiple output stream in python? 在您的问题得到真正回答之前,您应该避免接受答案。请不要以不同的方式多次问同一个问题。
-
@jww 实际上,这个问题是我提出来的......当我尝试使用
open('/dev/fd/3', 'w')时出现错误 -
@jww 关于在 python 中创建
fd的第一个问题,我猜这更多是关于 linux 的。总之,谢谢提醒 -
/dev/fd是指向/proc/self/fd的符号链接,它只是对您的程序已打开的文件句柄的内省。您打开一个文件句柄,您会在该目录中获得一个新条目。因此,shell 中的exec 3>somefile.txt将创建一个/dev/fd/3,因为它打开了somefile.txt,然后使用dup2()将自动分配的描述符编号重新编号为3。
标签: linux bash shell io file-descriptor