stat/lstat函数使用

1. 进程虚拟地址空间

2. stat函数

  • 获取文件信息
       #include <sys/types.h>
       #include <sys/stat.h>
       #include <unistd.h>

       int stat(const char *pathname, struct stat *statbuf);
       int fstat(int fd, struct stat *statbuf);
       int lstat(const char *pathname, struct stat *statbuf);

       #include <fcntl.h>           /* Definition of AT_* constants */
       #include <sys/stat.h>

       int fstatat(int dirfd, const char *pathname, struct stat *statbuf,
                   int flags);
           struct stat {
               dev_t     st_dev;         /* ID of device containing file */
               ino_t     st_ino;         /* Inode number */
               mode_t    st_mode;        /* File type and mode */
               nlink_t   st_nlink;       /* Number of hard links */
               uid_t     st_uid;         /* User ID of owner */
               gid_t     st_gid;         /* Group ID of owner */
               dev_t     st_rdev;        /* Device ID (if special file) */
               off_t     st_size;        /* Total size, in bytes */
               blksize_t st_blksize;     /* Block size for filesystem I/O */
               blkcnt_t  st_blocks;      /* Number of 512B blocks allocated */

               /* Since Linux 2.6, the kernel supports nanosecond
                  precision for the following timestamp fields.
                  For the details before Linux 2.6, see NOTES. */

               struct timespec st_atim;  /* Time of last access */
               struct timespec st_mtim;  /* Time of last modification */
               struct timespec st_ctim;  /* Time of last status change */

           #define st_atime st_atim.tv_sec      /* Backward compatibility */
           #define st_mtime st_mtim.tv_sec
           #define st_ctime st_ctim.tv_sec
           };

stat函数参数

  • pathname 文件名
  • struct stat *buf 传出参数,定义 struct stat sb; &sb

返回值

  • 成功返回0,失败返回-1,设置errno
#include <sys/types.h> 
#include <sys/stat.h>  
#include <unistd.h>    
#include <stdio.h>
  
int main(int argc, char *argv[])
{
    if (argc != 2) {   
        printf("./a.out filename\n");
        return -1;     
    }
    struct stat sb;    
    stat(argv[1], &sb);
  
    return  0;
  
}

 

posted @ 2019-03-30 19:49  douzujun  阅读(1913)  评论(0编辑  收藏  举报