这三个函数的功能是一致的,都用于获取文件相关信息,但应用于不同的文件对象。对于函数中给出pathname参数,stat函数返回与此命名文件有关的信息结构,fstat函数获取已在描述符fields上打开文件的有关信息,lstat函数类似于stat但是当命名的文件是一个符号链接时,lstat返回该符号链接的有关信息,而不是由该符号链接引用文件的信息。第二个参数buf是指针,它指向一个用于保存文件描述信息的结构,由函数填写结构内容。该结构的实际定义可能随实现有所不同.

用法:

#include

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

参数:
path:文件路径名。
filedes:文件描述词。
buf:是以下结构体的指针

struct stat{
mode_t st_mode; //(文件保护模式)文件类型和权限信息 结构体详解请参考此处
ino_t st_ino; //文件结点号
dev_t st_dev; //文件所在设备的文件系统标识号 device number (file system)
dev_t st_rdev; //文件所表示的特殊设备文件的设备标识 device number for special files
nlink_t st_nlink; //符号链接数
uid_t st_uid; //文件用户标识 用户ID
gid_t st_gid; //文件用户组标识 组ID
off_t st_size; // 总大小,字节为单位 size in bytes,for regular files
time_t st_st_atime; //文件内容最后访问的时间
time_t st_mtime; //文件内容最后修改时间
time_t st_ctime; //文件结构最后状态改变时间
blksize_t st_blksize; // 文件系统的最优I/O块大小 best I/O block size
blkcnt_t st_blocks; //分配给文件的块的数量,512字节为1单元 number of disk blocks allocated
};

文件类型:
普通文件,目录文件,块特殊文件,字符特殊文件,套接字,FIFO,符号链接.
文件类型信息包含在stat结构的st_mode成员中,可以用如下的宏确定文件类型,这些宏是stat结构中st_mode的成员.
S_ISREG();

S_ISDIR();

S_ISBLK();

S_ISCHR();

S_ISSOCK();

S_ISFIFO();

S_ISLNK();

返回说明:
成功执行时,返回0。失败返回-1,errno被设为以下的某个值
EBADF: 文件描述词无效
EFAULT: 地址空间不可访问
ELOOP: 遍历路径时遇到太多的符号连接
ENAMETOOLONG:文件路径名太长
ENOENT:路径名的部分组件不存在,或路径名是空字串
ENOMEM:内存不足
ENOTDIR:路径名的部分组件不是目录

示例:

#include
int main(int argc,char* argv[])
{
int i;
struct stat buf;
char * ptr; for(i=;i
{
if(lstat(argv[i],&buf)<)
{
perror(”错误原因是:”);
continue;
} if (S_ISREG(buf.st_mode))
ptr=”普通文件”;
if (S_ISDIR(buf.st_mode))
ptr=”目录”; //……and so on… cout<<”参数为:”<<<”的标识是一个”<<
}
exit();
}

C语言:stat,fstat和lstat函数的更多相关文章

  1. 文件和目录之stat、fstat和lstat函数

    #include <sys/stat.h> int stat( const char *restrict pathname, struct stat *restrict buf ); in ...

  2. C语言样式的文件操作函数

    使用C语言样式的文件操作函数,需要包含stdio.h头文件. 1.打开文件的函数: //oflag的取值为“w”或“r”,分别表示以写或读的方式打开 FILE* fd = fopen(filename ...

  3. 获取文件属性信息之stat、fstat和lstat

    UNIX文件系统是目录和文件组成的一种层次结构.目录(directory)是一个包含许多目录项的文件,在逻辑上,可以认为每个目录项都包含一个文件名,同时还包含说明该文件属性的信息.文件属性是指文件类型 ...

  4. stat,fstate,lstat函数

    #include <sys/stat.h> int stat (const char *restrict pathname,struct stat* restrict buf) int f ...

  5. 第九篇:使用 lstat 函数获取文件信息

    前言 在之前的文章中,描述过如何用 fcntl 函数改变文件的状态标记.但,文件还有很多信息,如文件类型,权限设置,设备编号,访问时间等等.如果要获取这些信息,则使用函数 lstat 可以轻松达到这个 ...

  6. 使用 lstat 函数获取文件信息

    前言 在之前的文章中,描述过如何用 fcntl 函数改变文件的状态标记.但,文件还有很多信息,如文件类型,权限设置,设备编号,访问时间等等.如果要获取这些信息,则使用函数 lstat 可以轻松达到这个 ...

  7. C语言带参数的main函数

    C语言带参数的main函数 #include<stdio.h> int main(int argc,char*argv[]) { int i; ;i<argc;i++) printf ...

  8. C 语言的可变参数表函数的设计

    在c语言中使用变长参数最常见的就是下面两个函数了: int printf(const char *format, ...); int scanf(const char *format, ...); 那 ...

  9. 智能合约语言 Solidity 教程系列3 - 函数类型

    Solidity 教程系列第三篇 - Solidity 函数类型介绍. 写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以 ...

随机推荐

  1. 基于选择重传ARQ传输协议的数据重传机制方案设计

    原文链接: http://blog.csdn.net/pinghegood/article/details/7841281  1.背景 最近在项目中,由于使用TD网络传输数据,数据掉包严重,软件组老大 ...

  2. js中json对象的深拷贝

    /** * 对象深拷贝 * @param obj */ function deepCopy(obj) { var txt=JSON.stringify(obj); return JSON.parse( ...

  3. JMeter入门

    下载及安装 下载地址:http://jmeter.apache.org/download_jmeter.cgi 直接下载Release版本,解压即可使用 MAC.Linux中直接运行:jmeter文件 ...

  4. alt属性

    也被称为alt text, 是当图片无法加载时显示的替代文本.alt属性对于盲人或视觉损伤的用户理解一幅图片中所描绘的内容非常重要,搜索引擎也会搜索alt属性. 简而言之,每一张图片都应该有一个alt ...

  5. poj 3635/hdu 1676 Full Tank? 车辆加油+最短路

    http://acm.hdu.edu.cn/showproblem.php?pid=1676 给出一张图,n<=1000,m<=10000. 有一辆车想从图的一个地方到达另外一个地方,每个 ...

  6. 看起来像一个输入框的input,实际上是有两个input

    看起来像一个输入框的input,实际上是有两个input

  7. CentOS6.5 解压安装 二进制分发版 mysql-5.5.49-linux2.6-x86_64.tar.gz

    环境:CentOS 6.5 64位 1.下载安装包 http://dev.mysql.com/downloads/mysql/5.5.html#downloads http://dev.mysql.c ...

  8. PHP会话处理相关函数介绍

    PHP会话处理相关函数介绍 提交 我的评论 加载中 已评论 PHP会话处理相关函数介绍 2015-03-23 PHP100中文网 PHP100中文网 PHP100中文网 微信号 功能介绍 互联网开发者 ...

  9. JQuery学习(选择器-可见性-hidden)

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  10. 应用框架的设计与实现——.NET平台(10 授权服务.CodeAccessSecurityAttribute)

    以下内容转载自:http://blog.csdn.net/dongma_yifei/article/details/1533124 CodeAccessSecurityAttribute 是 Prin ...