2012-02-24 116 views
0

當我創建一個新文件(例如touch.txt)時,它的大小等於0B。 我想知道它的信息(大小,最後修改日期,所有者名稱,文件名)存儲在哪裏。 這些信息存儲在硬盤上,當然是由內核管理的,但我想知道更多關於它們的信息: 我可以在哪裏以及如何獲得它們,例如使用編程語言C,以及我如何可能會改變他們。 這些信息是否可以改變,只需使用一種編程語言,或者內核可以避免這種操作?關於基於unix的文件系統的文件信息

我正在研究基於Unix的文件系統,並且我正在詢問關於這個fs的信息。

+1

看看Unix系統編程,你會發現這些操作的低級功能 – accfews 2012-02-24 14:50:00

回答

2

該信息可以使用stat()函數(及其系列中的其他函數)進行檢索。它的存儲位置取決於特定的文件系統,對於什麼是顯而易見的原因,除非您有原始的驅動器訪問權限,否則不能更改它們 - 除非您確定丟失該驅動器上的所有內容,否則應該避免這種情況。

+0

據我所知,內核不會修改諸如「大小」之類的值,而是限制從驅動器讀取它。這可能很明顯,但我想確認我的想法。謝謝你的回答,祝你有美好的一天。 – joker 2012-02-24 16:36:35

3

在Unix系統,那麼傳統的存儲在文件中表示的元數據部分稱爲inode

您可以獲取與stat()調用此信息,請參閱these領域,您可以更改所有者和權限。 chown()和chmod()

+0

謝謝,你的回答很明確,讓我理解。 – joker 2012-02-24 15:52:53

0

元數據(如所有者,大小和日期)通常存儲在名爲index-node(inode)的結構中,該結構駐留在文件系統的超級塊中。