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