2012-02-24 85 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)的结构中,该结构驻留在文件系统的超级块中。