可以安全地写入 /proc/self/fd/N

可以安全地写入 /proc/self/fd/N

写入 /proc/self/fd/N 是否安全,其中 N 是进程拥有的任何文件描述符。

我的用例是 ssh 到远程计算机并许多远程文件到本地文件。本地文件是先前创建的并立即取消链接,以便其他用户/进程无法看到它们。

fd = open("/tmp/doo",O_CREAT|O_RDWR);
unlink("/tmp/doo");
...
...
system("ssh -n user@remotehost -- cat /remote_file >/proc/self/fd/N") // N is a valid fd number

我无法将输出重定向到 fd (cat /remote_file >&N),因为 shell 只允许使用 0-9。

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07

打开的文件由从零开始的十进制数字表示。最大可能值是实现定义的;但是,所有实现都应至少支持 0 到 9(含)以供应用程序使用。这些数字称为“文件描述符”。值 0、1 和 2 具有特殊含义和常规用途,并且由某些重定向操作隐含;它们分别称为标准输入、标准输出和标准错误。程序通常从标准输入获取输入,并将输出写入标准输出。错误消息通常写在标准错误上。重定向运算符前面可以有一位或多位数字(不允许插入字符)来指定文件描述符编号。

将输出重定向到两位数文件描述符的问题

相关内容