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\n" , strerror(errno));
  }
  else
  {
    fstat(fd , &fileinfo);//获取文件属性 //stat只需要改下参数即可

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

  return 0;

}

fstat().stat()函数的更多相关文章

  1. linux下实现ls()函数遍历目录

    转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600794.html 需求:在linux下遍历目录,输出目录中各文件名. 在linux下遍历目录的相关函数有 ...

  2. [C++]linux下实现ls()函数遍历目录

    转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600794.html 需求:在linux下遍历目录,输出目录中各文件名. 在linux下遍历目录的相关函数有 ...

  3. ext2文件系统

    2.1. 总体存储布局 我们知道,一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如某种mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的 ...

  4. Linux系统编程(6)——文件系统

    计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数 ...

  5. inode表元数据,存储在物理存储体上

    一个文件除了数据需要存储之外,一些描述信息也需要存储,例如文件类型(常规.目录.符号链接等),权限,文件大小,创建/修改/访问时间等,也就是ls -l命令看到的那些信息,这些信息存在inode中而不是 ...

  6. Node.js:文件系统

    ylbtech-Node.js:文件系统 1.返回顶部 1. Node.js 文件系统 Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API. Node 导入文件系统模块(fs)语 ...

  7. 33.Node.js 文件系统fs

    转自:http://www.runoob.com/nodejs/nodejs-module-system.html Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API. Node ...

  8. Node.js Learning Notes

    简介 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务 ...

  9. C语言:stat,fstat和lstat函数

    这三个函数的功能是一致的,都用于获取文件相关信息,但应用于不同的文件对象.对于函数中给出pathname参数,stat函数返回与此命名文件有关的信息结构,fstat函数获取已在描述符fields上打开 ...

随机推荐

  1. 自己动手Jquery插件

    最近Web应用程序中越来越多地用到了JQuery等Web前端技术.这些技术框架有效地改善了用户的操作体验,同时也提高了开发人员构造丰富客户 端UI的效率.JQuery本身提供了丰富的操作,但是,有时候 ...

  2. 在DDMS中访问data目录

    转自 http://blog.csdn.net/catoop/article/details/7584746 由于某些原因,需要通过eclipse访问/data/下的文件. 打开eclipse-DDM ...

  3. hdu2157之矩阵快速幂

    How many ways?? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. AptanaStudio3 安装在win7 64bit时遇到的问题

    最近在研究前端语言,想起可以使用AptanaStudio这个前端利器,没想到安装时却遇到波折.先从网上下载了Aptana版本 3.6.0 64bit问题1 安装进度缓慢,第一次安装时,显示downlo ...

  5. mysql 服务器ip连接统计

    有的时候数据库服务器连接数过大,也没有慢sql,想知道哪些应用服务器连接上来的比较多,下面的命令轻松搞定 netstat -tnp|grep ESTABLISHED|awk '{ print $5 } ...

  6. Spring3.0官网文档学习笔记(八)--3.4.3~3.4.6

    3.4.3 使用depends-on     使用depends-on能够强制使一个或多个beans先初始化,之后再对这个bean进行初始化. 多个bean之间用","." ...

  7. INSERT DELAYED 句法

    INSERT 语句的 DELAYED 选项是一个 MySQL 特有的选项,如果你的客户端不能等待 INSERT 的完成,这将会是很有用的.This is a common problem when y ...

  8. 【转】GitHub删除一个仓库——2013-08-27 21

    http://xiacijian.blog.163.com/blog/static/849931902012111195041170/ 1.进入要删除的仓库 2.找到 导航栏 Code  NetWor ...

  9. <BEA-141281> <unable to get file lock, will retry ...> --reference

    I ran into this error the first time I restarted Weblogic on one of my installs, the only reference ...

  10. 自定义ContentProvider

    ContentProvider作为安卓的四大组件之一,在看开发中用到的频率远不如其他三个,以至于我都把这个东西给忘了,最近由于工作原因,不得不重新拾起来总结一下,那么今天就来说说自定义ContentP ...