• stat函数


    int lstat(const char *path,struct stat*buf)

    当文件是一个符号链接时,lstat返回的是该符号链接本身的信息,而stat返回的是该链接指向的文件的信息。

    struct stat
    {
        dev_t        st_dev;        //设备号码
        ino_t        st_ino;        //inode节点号
        mode_t        st_mode;        //文件对应的模式,文件,目录,sock,管道等等
        nlink_t        st_nlink;        //文件的连接数          软连接或硬链接
        uid_t        st_uid;        //文件所有者
        gid_t        st_gid;        //文件所有者对应的组
        dev_t        st_rdev;        //特殊设备号码
        off_t         st_size;        //普通文件,对应的文件字节数
        timestruc_t    st_atim;        //文件最后被访问的时间
        timestruc_t    st_mtim;        //文件内容最后被修改的时间
        timestruc_t    st_ctim;        //文件状态改变时间
        blksize_t        st_blksize;    //文件内容对应的块
        blkcnt_t         st_blocks;    //文件内容对应的块数量
        char         st_fstype[_ST_FSTYPSZ];
    };

    stat结构体中的st_mode则定义了下列数种情况

                 

    S_IFMT  

    0170000

    文件类型的位遮罩

    S_IFSOCK

    0140000

    socket

    S_IFLNK

    0120000

    符号链接

    S_IFREG

    0100000

    一般文件

    S_IFBLK

    0060000

    区块装置

    S_IFDIR

    0040000

    目录

    S_IFCHR

    0020000

    字符装置

    S_IFIFO

    0010000

    先进先出

    S_ISUID

    04000

    文件的(set user-id on execution)位

    S_ISGID

    02000

    文件的(set group-id on execution)位

    S_ISVTX

    01000

    文件的sticky位

    S_IRUSR(S_IREAD)

    00400

    文件所有者具有可读权限

    S_IWUSR(S_IWRITE)

    00200

    文件所有者具有可写权限

    S_IXUSR(S_IEXEC)

    00100

    文件所有者具有可执行权限

    S_IRGRP

    00040

    用户组具有可读权限

    S_WGRP

    00020

    用户组具有可写权限

    S_IXGRP

    00010

    用户组具有可执行权限

    S_IROTH

    00004

    其他用户具有可读权限

    S_IWOTH

    00002

    其他用户具有可写权限

    S_IXOTH

    00001

    其他用户具有可执行权限

    上述文件类型在POSIX中定义了检查这些类型的宏定义

    S_ISLNK (st_mode)

    判断是否为符号链接

    S_ISREG (st_mode)

    判断是否为一般文件

    S_ISDIR(st_mode)

    是否为目录

    S_ISCHR(st_mode)

    是否为字符装置文件

    S_ISBLK(st_mode)

    是否为先进先出

    S_ISSOCK(st_mode)

    是否为socker

    若一般目录具有sticky位(S_ISVTX),则表示在此目录下的文件只能被该文件所有者、此目录所有者或root来输出或改名,在linux中,最典型的就是/tmp目录了。

  • 相关阅读:
    MYSQL存储引擎
    微信公众号自定义菜单
    TCP 三次握手与四次挥手
    微信扫码关注公众号并登录网站
    redis scan命令使用
    [转]Maven多模块结构下版本管理的正确姿势-revision
    线程间的协作wait,notify,sleep,yield,join
    GIT 撤销操作
    Kafka学习理解-listeners配置
    Kafka 简介梳理
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11599689.html
Copyright © 2020-2023  润新知