質問Getting Filename from file descriptor in Cの変形です。これはLinuxに関するものです。ファイルディスクリプタから名前を変更しますか?
通常のファイルを参照するファイルディスクリプタがある場合は、ファイルディスクリプタに新しいファイル名を付けることでファイルディスクリプタを「保存」できますか?私はrename(2)やlink(2)と同様のものを探していますが、ファイル名の代わりにファイル記述子を入力として受け入れます。
rename(2)とlink(2)の問題は、ファイルデリミッタからファイル名に移動しようとしても失敗する可能性があることです。開かれたファイルディスクリプタがすでにリンクされていないファイルを参照している場合について、より正確に考えています。この場合、ファイルにはそれ以上の名前はありません。ファイル記述子を閉じるときにファイルが削除されないようにする方法はないようです。しかし、私は間違っていますか? PosixやLinux APIを使って、名前を付け直すことはできますか?
更新:実際にLinux上で削除されたファイルの内容は、壊れたシンボリックリンクのように見えますが、/proc/<pid>/fd/<fd>
にあります。このようなファイルを再マテリアライズするためにlink(2)やln(1)を使うことはできませんが、デバイス間のリンクをしようとしていると思っています。
ただし、fd/ファイルからコンテンツをコピーできます。あなたはそれを再リンクすることはできません愚か。 –
本質的に同じ質問、ここでは良い答え:http://stackoverflow.com/q/4171713/4421 – pixelbeat