2014-03-24 21 views
0

我想在運行期間爲文件分配唯一文件編號。在運行期間爲文件分配唯一編號

  1. 爲文件名創建散列對我來說不是一種選擇,因爲我不想要任何衝突。

  2. 一個不錯的選擇是爲所有文件創建運行號碼。但是我無法訪問源文件來遍歷運行我的二進制文件的目錄。

所以我需要一些可以從二進制文件中提取文件名的選項(比如使用類似於GDB的符號表)。我不知道該怎麼做。任何幫助都可以使用

+0

使用日期和時間,我懷疑你會有重複:) –

+0

你仍然需要一個哈希,只是不完全依賴於名稱 – SGM1

+1

什麼是你的文件號碼,你如何讓他們獨特?你知道[inodes](http://en.wikipedia.org/wiki/Inode)和[文件系統](http://en.wikipedia.org/wiki/File_system)嗎?看起來你的問題可能沒有意義。 –

回答

2

您可以嘗試從文件本身使用inode編號(st_ino) - 您可以使用fstat(http://linux.die.net/man/2/fstat)獲得該編號。

inode編號是文件系統如何跟蹤文件,它們對於給定的文件系統是唯一的 - 因此只要文件不位於不同的文件系統(不同的掛載點)上,inode號碼是唯一的。

這包括如果有多個鏈接到同一個文件,如果這也讓你擔心。

+0

如果有多個_hard_鏈接,它們將具有相同的inode。摸一下;在一個b; ls -i a b'來證明它。 – mah

+0

是的 - 多個鏈接(硬鏈接或軟鏈接)導致相同的文件 - 它們是相同的文件,這是重點 - 所以如果OPs問題被正確理解,它們應該有相同的ID號碼。 – Soren

+0

我以爲你打算說多個鏈接有不同的索引節點。儘管多個_soft_鏈接_do_具有不同的inode。摸一下; ln -s a b; ln -s a c; ls -i'顯示了這一點。如果這是一個問題,lstat()解決它。 – mah

相關問題