如何在/ dev / fd下添加新的文件描述符?

时间:2018-02-12 04:23:48

标签: linux bash shell io file-descriptor

我通过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'

1 个答案:

答案 0 :(得分:3)

/dev/fd不是真正的目录。您不向其添加文件,它只显示进程(在您的情况下为ls)已打开的fds。

要从shell打开新FD,您只需运行

即可
./yourprogram 3>myfile

如果程序写入FD 3,输出将以myfile结束。

以下是一个例子:

$ cat foo.c
#include <unistd.h>

void main() {
  write(3, "hello world\n", 12);
}

$ gcc foo.c -o foo

$ ./foo 3> myfile

$ cat myfile
hello world