問題Getting Filename from file descriptor in C的變體。這是關於Linux的。從文件描述符重命名?
如果我有一個指的是普通文件的文件描述符,我可以給它一個新的文件名「保存」文件描述符(某處在同一臺設備上爲它生活的地方,當然)?我正在尋找類似於重命名(2)或鏈接(2)的東西,但它會接受文件描述符作爲輸入而不是文件名。
與重命名的問題(2)和鏈路(2),即使你可以嘗試從文件descritor到文件名中去,這可能會失敗。我更精確地考慮了打開的文件描述符是指已經被取消鏈接的文件的情況 - 在這種情況下,文件沒有更多的名稱。當我們關閉()文件描述符時,似乎沒有辦法阻止文件被刪除。但我錯了嗎?我們可以用Posix甚至Linux API再次給它一個名字嗎?
更新:我們實際上可以在/proc/<pid>/fd/<fd>
的Linux上看到已刪除文件的內容,即使它看起來像一個破碎的符號鏈接。我們不能用鏈接(2)或LN(1)這種重新實現一個文件,但是,因爲它認爲我們正在試圖做一個跨設備的鏈路。
但是,您可以複製fd/文件中的內容。很傻,你不能重新鏈接它。 –
基本上同樣的問題在這裏有很好的答案:http://stackoverflow.com/q/4171713/4421 – pixelbeat