zoukankan      html  css  js  c++  java
  • 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目录了。

  • 相关阅读:
    Linux并发与同步专题 (1)原子操作和内存屏障
    Linux并发与同步专题
    功耗案例分析:周期性底电流抬高问题分析和解决
    Android OpenGL 基础入门
    使用Codeblock搭建Windows下Objec-c学习环境
    Muduo 多线程模型对比
    NPTL 线程同步方式
    C++ 封装互斥对象
    Java 常用字符串操作总结
    Android 开发有用代码积累
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11599689.html
Copyright © 2011-2022 走看看