所在的头文件 <sys/stat.h>

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;/*最佳I/O块大小*/

  blkcnt_t  st_blocks;/*文件所占用的磁盘块*/

}

注意:st_rdev  st_blksize  st_blocks  这三个字段不是  POSIX.1  要求的

1、stat函数

  int  stat(const char* restrict pathname , struct stat * restrict   buf);

  跟随符号链接,该函数指定一个符号链接的时候,函数返回的是符号链接指向的文件的信息

 1 #include<stdio.h>
 2 #include<unistd.h>
 3 #include<sys/stat.h>
 4 
 5 int
 6 main(int argc, char** argv)
 7 {
 8         struct  stat    buf;
 9 
10         stat(argv[1],&buf);
11 
12         printf("文件访问标志    :%o\n",buf.st_mode);
13         printf("设备号          :%d\n",buf.st_dev);
14         printf("特殊设备文件号  :%d\n",buf.st_rdev);
15         printf("硬链接数        :%d\n",buf.st_nlink);
16         printf("文件所有者用户ID:%d\n",buf.st_uid);
17         printf("文件所有者组ID  :%d\n",buf.st_gid);
18         printf("普通文件的大小  :%d\n",buf.st_size);
19         printf("上次访问时间    :%d\n",buf.st_atime);
20         printf("上次修改时间    :%d\n",buf.st_mtime);
21         printf("上次状态更新时间:%d\n",buf.st_ctime);
22         printf("最佳I/O块大小   :%d\n",buf.st_blksize);
23         printf("文件所占块数    :%d\n",buf.st_blocks);
24 
25         return  0;
26 }

  

2、fstat函数

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

  fstat 同 stat , 但是只是从文件描述符上获取 文件的 stat 信息

 

3、lstat函数

  int  lstat(const char * restrict pathname , struct stat * buf);

  lstat函数同stat函数, 但是 lstat 函数不跟随符号链接 , 当访问符号链接的时候, 获取的是符号链接本身的stat,而不是其指向的文件的stat

 

 

posted on 2013-05-30 11:37  wowk  阅读(293)  评论(0编辑  收藏  举报