文件与目录

本文详细介绍了UNIX文件系统中的文件与目录概念,包括文件的类型(普通文件、目录、链接、符号链接等),文件的属主和权限,以及stat()、fstat()和lstat()函数的用途。文件的inode包含重要信息,如访问权限、属主ID和时间戳。此外,文章还探讨了硬链接和符号链接的区别,以及如何通过函数如link()和symlink()创建链接。特别文件,如块设备和字符设备,也在此进行了阐述。
摘要由CSDN通过智能技术生成

文件与目录

文件

文件本质上是一个存放数据的容器。逻辑上,文件由一个以文件尾结束的连续字节流组成。物理上,文件由存储在磁盘这类稳定介质中的一系列的数据块组成。UNIX文件系统中,每一个存放在磁盘上的文件由以下两部分组成:

数据块——实际存放文件数据的磁盘块。
inode——UNIX文件系统中用于描述文件特征的数据结构,它包含文件的重要信息,如数据在磁盘上的地址,文件中数据块的大小,文件的属主是谁等。inode也称为文件索引结点或信息结点。在同一个文件系统中,每一个inode有唯一的标识号,称为inode号,也称为文件顺序号。

尽管应用极少关心文件在磁盘上的物理位置,通常也不关心inode号,但知道什么是inode对深入理解UNIX文件会有所帮助,因为应用常常会要关心文件的以下信息,所有这些信息都存储在文件的inode中。

文件的类型:UNIX文件系统有几种不同类型的文件:普通文件、目录、特别文件、有名管道(FIFO)、符号链接和套接字。
文件的属主关系:拥有此文件的用户和组。
文件的访问权限:是否允许文件属主、同组用户以及其他人读、写或执行该文件。
文件的时间戳:文件的修改时间、最后一次访问时间、最后一次修改inode的时间。

UNIX命令“ls-l”可查看到inode的大部分内容,“ls-i”可显示出文件的inode号,而命令stat则几乎列出了inode的每一项内容。例如,在Linux系统中用命令stat可查看到某个文件的inode状态如下:

$ stat myoutput 
  File: myoutput
  Size: 37        	Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d	Inode: 1840083     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/     xqm)   Gid: ( 1000/     xqm)
Access: 2022-07-20 17:06:57.792862203 +0800
Modify: 2022-07-20 17:06:53.984795065 +0800
Change: 2022-07-20 17:06:53.984795065 +0800
 Birth: -

输出中的第二行给出了文件的大小、块数以及类型(普通文件),第三行给出了文件驻存的设备ID、inode号、链接数;第四行指出了文件的访问权限、它的属主ID和组ID;最后三行给出了文件的三种时间戳。

stat()、fstat()和lstat()函数

在程序中查看文件的特征,即它的inode状态信息,可用stat()、fstat()和lstat()函数。

#include <sys/types.h>
#include <sys/stat.h>
int stat (const char *pathname, struct stat *buf);
int fstat(int fd, struct stat *buf);
long int lstat (const char *pathname, struct stat *buf);

其中,fstat()返回与描述字filedes相连文件的特征。stat()和lstat()返回路径名pathname指定文件的特征。当给定的文件不是符号链接(4.2.4节)时,这两个函数的结果相同;当文件是符号链接时,stat()返回链接所引用的文件的特征,而lstat()返回链接本身的特征。返回的文件特征存储在buf所指类型为stat的结构中,此结构的存储空间由应用程序提供。stat结构的完整定义会随系统不同而稍有不同,但至少都含有表4-1中列出的成员。

stat()十分有用,当应用程序需要知道文件的诸如属主ID、访问权

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值