/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
シェルでは0〜9しか許可されていないため、出力をfd(cat / remote_file>&N)にリダイレクトできません。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07
開いたファイルは、0 から始まる 10 進数で表されます。可能な最大値は実装によって定義されます。ただし、すべての実装はアプリケーションを使用するために少なくとも0〜9(含む)をサポートする必要があります。この数字を「ファイル記述子」と呼びます。 0、1、2の値は特別な意味と一般的な用途を持ち、特定のリダイレクト操作によって暗示され、それぞれ標準入力、標準出力、および標準エラーと呼ばれます。プログラムは通常、標準入力から入力を受け取り、標準出力に出力を書き込みます。エラーメッセージは通常標準エラーに記録されます。ファイル記述子番号を指定するために、リダイレクト演算子の前に1つ以上の数字(挿入された文字は許可されていません)が続くことがあります。