APUE 文件和目录 几个小知识点

于 2012年03月3日 发布在 linux应用 跳到评论

如果用open或creat创建已经存在的文件,则该文件的访问权限位不变。

文件中的空洞是由所设置的偏移量超过文件的尾端,并写了某些数据造成的。空洞不占用磁盘空间,只是打开文件时在内核用一个值为0的数据结构表示。相同长度的文件,含有空洞的文件占用的磁盘块(du  <文件>)可能少一些,用这可以大致判断一个文件是否有空洞。

int unlink( const char *pathname )函数删除目录项,并将由pathname所引用文件的链接技术 -1,如果还有指向该文件的其他链接,则仍然可以通过其他链接访问该文件的数据。只有当链接计数达到0时,该文件的内容才会删除。另一个条件也会阻止删除文件的内容—-只要有进程打开了该文件,其内容也不能删除。如果pathname是符号链接,那么unlink删除符号链接,而不会删除由该链接所引用的文件。给出符号链接的情况下,没有一个函数能删除由该链接所引用的文件。

我们也可以用remove函数删除对一个文件活目录的链接,对于文件,remove的用能与unlink相同,对于目录,remove的功能与rmdir相同。

内核对目录树的深度没有内在限制,但是如果路径名的长度超过了PATH_MAX,则有许多命令会失败。

stat结构中st_atime,st_mtime,st_ctime分别是文件数据的最后访问时间,文件数据的最后修改时间,i节点状态的最后更改时间。

父目录中的每一个子目录都会使该父目录的链接计数增1.

留下评论!

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)