第四章--文件和目录

1、文件的属性信息:

1. 属性结构体struct stat;

struct stat {
            mode_t     st_mode;  //文件类型与访问权限位
            ino_t         st_ino;      //文件i节点编号
            dev_t        st_dev;      //文件所属的文件系统的设备号(包括主设备、次设备号)
            dev_t        st_rdev;     //文件是块设备、字符设备时的设备号(主设备、次设备)
            nlink_t      st_nlink;    //
            uid_t         st_uid;      //文件所有者的用户Id
            gid_t         st_gid;      //文件所有者的用户组Id
            off_t          st_size;     //文件的大小(字节单位)
            time_t       st_atime;  //文件内容的最新访问时间
            time_t       st_mtime; //文件内容的最新修改时间
            time_t       st_ctime;   //文件属性的最新修改时间
            blksize_t    st_blksize;//文件所在文件系统的块大小
            blkcnt_t     st_blocks; //文件在文件系统中所占的块数 
    }

2. 文件类型:
1、普通文件
2、目录文件。文件内容为其包括的文件名称与文件i节点编号
3、块特殊文件。文件为块设备
4、字符特殊文件。文件为字符设备
5、FIFO。命名管道,用于进程间通信
6、套接字。用于进程间的网络通信,进程可以是同一台机器上的,也可以是不同机器上的。
struct stat结构体中的st_mode字段,保存有文件的类型,有如下宏可以查看该文件的类型:

    S_ISREG(stat.st_mode)。如果返回结果为真,则为普通文件
    S_ISDIR(stat.st_mode)。如果返回结果为真,则为目录文件
    S_ISCHR(stat.st_mode)。如果返回结果为真,则为字符特殊文件
    S_ISBLK(stat.st_mode)。如果返回结果为真,则为块特殊文件
    S_ISFIFO(stat.st_mode)。如果返回结果为真,则为命名管道文件
    S_ISLNK(stat.st_mode)。如果返回结果为真,则为符合链接文件
    S_ISSOCK(stat.st_mode)。如果返回结果为真,则为套接字文件

3. 获取文件属性信息的函数

 #include <sys/stat.h>
 int stat(const char *restrict pathname, struct stat *restrict buf);
 int fstar(int filedes, struct stat *buf);
 int lstat(const char *restrict pathname, struct stat *restrict buf);
                                                                         函数返回值:成功返回0,出错返回-1;

pathname为文件路径、fieldes为文件描述符,buf保存文件属性信息
lstat函数,在文件为符号链接文件类型时,只返回该符号链接文件本身对应的文件属性,而不是该符号链接指向的文件的属性。

操作系统中各种文件类型所占比例

2、文件访问权限

一个文件的权限信息如下图所示:
这里写图片描述
1、第一列的 -rwxr-xr-x:
-:表示该文件是一个普通文件
rwx:文件所有者拥有的权限,此处所有者的操作权限为对读、写、执行
r-x:文件所有组拥有的权限,此处所有组的操作权限为读、执行
r-x:文件其他用户拥有的权限,此处其他用户的操作权限为读、执行

2、第三、四列的 liuxiaowu liuxiaowu:
第三列表示文件所有者,struct stat结构里的st_uid字段
第四列表示文件所有组,struct stat结构里的st_gid字段

3、第五列的 425:
文件的大小,单位为字节

4、第六、七、八列的 Nov 11 23:02
文件内容最后被修改的时间

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值