Cのファイル記述子からファイル名を取得するという質問の変形。これはLinuxについてです。
通常のファイルを参照するファイル記述子がある場合、新しいファイル名を付けてファイル記述子を「保存」できますか(もちろん、同じデバイス上のどこかにあります)?rename(2)またはlink(2)に似たものを探していますが、ファイル名の代わりにファイル記述子を入力として受け入れます。
rename(2)とlink(2)の問題は、ファイル記述子からファイル名に移動しようとしても、失敗する可能性があることです。開いたファイル記述子がすでにリンク解除されたファイルを参照している場合について、より正確に考えています。この場合、ファイルには名前がありません。ファイル記述子をclose()したときにファイルが削除されるのを防ぐ方法はないようです。しかし、私は間違っていますか?PosixまたはLinuxAPIを使用して、名前を付け直すことはできますか?
/proc/<pid>/fd/<fd>
更新:壊れたシンボリックリンクのように見えても、Linuxで削除されたファイルの内容を実際に見ることができます。ただし、link(2)またはln(1)を使用してこのようなファイルを再実体化することはできません。これは、クロスデバイスリンクを実行しようとしていると見なされるためです。