我通过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'发布于 2018-02-12 12:35:54
/dev/fd不是真正的目录。您不需要向其中添加文件,它只显示进程(在您的示例中为ls)打开了哪些fds。
要从shell打开新的FDs,只需运行
./yourprogram 3>myfile如果程序写入fd3,则输出将以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 worldhttps://stackoverflow.com/questions/48739520
复制相似问题