博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fstat、stat和lstat 区别
阅读量:5070 次
发布时间:2019-06-12

本文共 1340 字,大约阅读时间需要 4 分钟。

 

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

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

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

一眼就能看出来fstat的第一个参数是和另外两个不一样的,fstat区别于另外两个系统调用的地方在于,fstat系统调用接受的是 一个“文件描述符”,而另外两个则直接接受“

文件全路径”。文件描述符是需要我们用open系统调用后才能得到的,而文件全路经直接写就可以了。

stat和lstat的区别:当文件是一个符号链接时,lstat返回的是该符号链接本身的信息;而stat返回的是该链接指向的文件的信息。(这样记,lstat比stat多了一个l,因此它是

有本事处理符号链接文件的,因此当遇到符号链接文件时,lstat当然不会放过。而 stat系统调用没有这个本事,它只能对符号链接文件睁一只眼闭一只眼,直接去处理链接所指

文件喽) 

  1. /* 
  2.  * Linux文件属性结构体信息 
  3.  * struct stat 
  4.  * {
     
  5.  *  dev_t st_dev;//设备 
  6.  *  ino_t st_ino;//结点 
  7.  *  mode_t st_mode;//模式 
  8.  *  nlink_t st_nlink;//硬连接 
  9.  *  uid_t st_uid;//用户ID 
  10.  *  gid_t st_gid;//组ID 
  11.  *  dev_t st_rdev;//设备类型 
  12.  *  off_t st_off;//文件字节数 
  13.  *  unsigned long st_blksize;//块大小 
  14.  *  unsigned long st_blocks;//块数 
  15.  *  time_t st_atime;//最后一次访问时间 
  16.  *  time_t st_mtime;//最后一次修改时间 
  17.  *  time_t st_ctime;//最后一次属性改变时间 
  18.  * } 
  19.  * 可通过stat或fstat函数获得文件的其他属性 
  20.  * stat函数用来判断没有打开的文件,而fstat函数用来判断打开的文件。 
  21.  * 
  22.  */ 
  23. #include <unistd.h>  
  24. #include <sys/stat.h>   
  25. int main(void)  
  26. {  
  27.     struct stat buf;  
  28.     stat("/etc/passwd",&buf);  
  29.     /* 
  30.      * stat函数 
  31.      * 取得文件的属性 
  32.      * sys/stat.h,unistd.h 
  33.      * int stat(const char *file_name,struct stat*buf); 
  34.      * 将参数file_name所指的文件状态复制到参数buf所指的结构中 
  35.      * 成功返回0,失败返回-1,错误存储于errno 
  36.      */  
  37.     printf("/etc/passwd文件的大小是:%d/n",buf.st_size);  
  38.     printf("/etc/passwd文件的最后一次修改时间是:%d/n",buf.st_ctim);  
  39.     return 0;  
  40. }  

转载于:https://www.cnblogs.com/nufangrensheng/archive/2013/03/10/2952617.html

你可能感兴趣的文章
结对开发四~~
查看>>
关于多用户下自动编号的问题
查看>>
只显示重复数据,或不显示重复数据
查看>>
curl 命令详解
查看>>
javascript 对象简单介绍(一)
查看>>
linux正则表达式回忆记录
查看>>
Response.Buffer = True
查看>>
有趣的python range()函数
查看>>
webpack执行命令失败之解决办法
查看>>
理解Mapreduce
查看>>
C语言的变量的作用域和生存期
查看>>
NIS & Kerberos配置
查看>>
【转】非常好的Java反射例子
查看>>
安装clamav对centos系统进行病毒查杀
查看>>
poj3744 Scout YYF I
查看>>
常用Flex 布局归置 》仅做笔记 (scss)
查看>>
Qt-Qml-隐藏标题栏-程序依附任务栏
查看>>
说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
查看>>
前端技术——bootstrap
查看>>
IGMP相关
查看>>