• fstat().stat()函数


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

    int fstat(int fd, struct stat *buf);

    唯一不同是参数不同,其他一样。

     文件的一些属性参数:

    struct stat{

      dev_t st_dev; /* ID of device containing file */
      ino_t st_ino; /* inode number */ 文件inode号
      mode_t st_mode; /* protection */ 
      nlink_t st_nlink; /* number of hard links */ 硬链接数
      uid_t st_uid; /* user ID of owner */  文件的UID
      gid_t st_gid; /* group ID of owner */文件的GID
      dev_t st_rdev; /* device ID (if special file) */设备ID(如果特殊的文件)
      off_t st_size; /* total size, in bytes */文件大小
      blksize_t st_blksize; /* blocksize for filesystem I/O */
      blkcnt_t st_blocks; /* number of 512B blocks allocated */
      time_t st_atime; /* time of last access */ 文件的三个时间atime mtime atime
      time_t st_mtime; /* time of last modification */
      time_t st_ctime; /* time of last status change */
    };

     通过下面的一些宏函数定义可以判断文件类型:

    The following POSIX macros are defined to check the file type using the st_mode field:

    下面的POSIX宏定义使用st_mode字段检查文件类型:

    如果如下宏返回真就说明是所指文件

     if( S_ISREG(st_mode) )

    {

        说明是普通文件

    }

    S_ISREG(m) is it a regular file? 普通文件

    S_ISDIR(m) directory?目录

    S_ISCHR(m) character device? 字符设备

    S_ISBLK(m) block device?块设备

    S_ISFIFO(m) FIFO (named pipe)? 管道

    S_ISLNK(m) symbolic link? (Not in POSIX.1-1996.) 符号链接

    S_ISSOCK(m) socket? (Not in POSIX.1-1996.)套接字

    例子:

    int main(int argc , char* argv[])
    {
      struct stat fileinfo;
      int fd;
      if(argc > 2 ) return 0;

      fd = open(argv[1] , O_RDONLY);

      if(fd == -1)
      {
        printf("%s " , strerror(errno));
      }
      else
      {
        fstat(fd , &fileinfo);//获取文件属性 //stat只需要改下参数即可

        if( S_ISREG(fileinfo.st_mode) )
        {
          printf("普通文件 ");
        }
      }
      close(fd);

      return 0;

    }

  • 相关阅读:
    python之访问限制机制
    python之property装饰器
    python之封装、组合
    python中classmethod和staticmethod
    (专题一)01 matlab基础
    代数运算
    点运算
    研究生学习安排2019/6/6
    图像处理中创建CDib类时无法选择基类类型时怎么办
    04 学习java养成良好的写作习惯
  • 原文地址:https://www.cnblogs.com/yuankaituo/p/4326576.html
Copyright © 2020-2023  润新知