nt 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. }

fstat、stat和lstat 区别相关推荐

  1. linux下fstat、stat和lstat 区别(转)

    原文地址::http://www.cnitblog.com/guopingleee/archive/2008/11/13/51411.aspx 相关文章 1.C语言中fstat.stat和lstat ...

  2. Linux中fstat、stat和lstat的用法与区别

    stat系统调用系列包括了fstat.stat和lstat,它们都是用来返回"相关文件状态信息"的,三者的不同之处在于设定源文件的方式不同. struct stat结构体 首先隆重 ...

  3. 计算机科学精彩帖子收集

    linux源码 LXR 源自"the Linux Cross Referencer",中间的"X"形象地代表了"Cross".与 Sourc ...

  4. nodejs中的文件系统

    文章目录 简介 nodejs中的文件系统模块 Promise版本的fs 文件描述符 fs.stat文件状态信息 fs的文件读写 fs的文件夹操作 path操作 简介 nodejs使用了异步IO来提升服 ...

  5. (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  6. 【Linux】文件操作系统调用

    一. 文件描述符 在Linux下使用文件描述符来表示设备文件和普通文件.文件描述符是一个整型的数据,所有对文件的操作都通过文件描述符实现.文件描述符的范围是0~OPEN_MAX,系统中有3个已经分配的 ...

  7. Unix基本系统数据类型和stat结构体

    Unix基本系统数据类型 历史上,某些UNIX变量已与某些C数据类型联系在一起,例如,历史上主.次设备号存放在一个1 6位的短整型中, 8位表示主设备号,另外8位表示次设备号.但是,很多较大的系统需要 ...

  8. Linux文件属性2——使用stat函数获取文件属性

    以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 一.获取文件属性 1.stat.fstat.lstat函数简介 每个文件都附带有一些属性: 属性信息存在于文件本身 ...

  9. 17、文件IO详解及实例

    上篇文章已经讲过了文件系统的一些基本的概念,这里首先对文件IO进行详细的学习,文件IO也称为系统调用IO,是操作系统为"用户态"运行的进程和硬件交互提供的一组接口,即操作系统内核留 ...

最新文章

  1. 转:使用 PHP 直接在共享内存中存储数据集
  2. python 随机数 随即字符 打乱元素顺序 random.randint()[uniform(), choice(), randrange(), shuffle(), sample()]
  3. windows常用命令netstat
  4. MATLAB的xlsread无法读入数据问题
  5. 用VS连接oracle数据库时ORA-12504错误
  6. python查看文档的软件_Python __doc__属性:查看文档
  7. 如何做一个懂产品的程序员?
  8. 公交查询系统 c语言,城市公交查询系统的设计任务书
  9. 【Python】导入资源管理器的文件列表(计算文件和文件夹大小)
  10. (计算机组成原理)第三章存储系统-第三节2:ROM芯片
  11. Python学习笔记——条件分支和while循环
  12. STM32F103C8T6用官方bootloader实现IAP升级操作方法
  13. type=radio增加onclick没有效果_佳能6d+小痰盂镜头,加1张餐巾纸拍摄花卉,朦胧美效果你喜欢吗?...
  14. MVC.NET:提供对字体文件.woff的访问
  15. hdu 4911 “Inversion”——逆序对问题
  16. python 自动执行 apdl_在高效的mann中从Python运行ANSYS Mechanical APDL
  17. linux日期时间转换函数,Linux时间戳、日期转换函数
  18. linux模拟键盘按键_Linux上的自动键盘按键
  19. FPGA学习笔记—UART,RS485串口通信(verilog)
  20. seo日常工作表_seo专员日常工作内容是什么?

热门文章

  1. 51Nod - 1381 硬币游戏
  2. HDU - 4497 GCD and LCM
  3. node--更新数据库问题
  4. 大龄程序员怎样渡过中年危机?(转)
  5. 内置系统账户:Local system/Network service/Local Service 区别
  6. 自定函数获取datagrid,datalist,rpeater控件中header,footer栏中控件
  7. JavA持有类_关于继承:Java持有对象的超类的类型
  8. mysql .pdb是什么文件_计算广告算法到底要做什么?
  9. python polar函数_Python可视化很简单,可是你会吗?python绘制饼图、极线图和气泡图,让我来教教你吧,一文教会!!!...
  10. linux用户空间注册按键事件,linux下获取按键响应事件