C语言获取文件状态

stat()

#include <sys/stat.h>

#include <unistd.h>

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

1.参数

struct stat

{

  dev_t st_dev; //device 文件的设备编号

  ino_t st_ino; //inode 文件的i-node

  mode_t st_mode; //protection 文件的类型和存取的权限

  nlink_t st_nlink; //number of hard links 连到该文件的硬连接数目, 刚建立的文件值为1.

  uid_t st_uid; //user ID of owner 文件所有者的用户识别码

  gid_t st_gid; //group ID of owner 文件所有者的组识别码

  dev_t st_rdev; //device type 若此文件为装置设备文件, 则为其设备编号

  off_t st_size; //total size, in bytes 文件大小, 以字节计算

  unsigned long st_blksize; //blocksize for filesystem I/O 文件系统的I/O 缓冲区大小.

  unsigned long st_blocks; //number of blocks allocated 占用文件区块的个数, 每一区块大小为512 个字节.

  time_t st_atime; //time of lastaccess 文件最近一次被存取或被执行的时间, 一般只有在用mknod、utime、read、write 与tructate 时改变.

  time_t st_mtime; //time of last modification 文件最后一次被修改的时间, 一般只有在用mknod、utime 和write 时才会改变

  time_t st_ctime; //time of last change i-node 最近一次被更改的时间, 此参数会在文件所有者、组、权限被更改时更新

};

先前所描述的st_mode 则定义了下列数种情况:

1、S_IFMT 0170000 文件类型的位遮罩

2、S_IFSOCK 0140000 scoket

3、S_IFLNK 0120000 符号连接

4、S_IFREG 0100000 一般文件

5、S_IFBLK 0060000 区块装置

6、S_IFDIR 0040000 目录

7、S_IFCHR 0020000 字符装置

8、S_IFIFO 0010000 先进先出

9、S_ISUID 04000 文件的 (set user-id on execution)位

10、S_ISGID 02000 文件的 (set group-id on execution)位

11、S_ISVTX 01000 文件的sticky 位

12、S_IRUSR (S_IREAD) 00400 文件所有者具可读取权限

13、S_IWUSR (S_IWRITE)00200 文件所有者具可写入权限

14、S_IXUSR (S_IEXEC) 00100 文件所有者具可执行权限

15、S_IRGRP 00040 用户组具可读取权限

16、S_IWGRP 00020 用户组具可写入权限

17、S_IXGRP 00010 用户组具可执行权限

18、S_IROTH 00004 其他用户具可读取权限

19、S_IWOTH 00002 其他用户具可写入权限

20、S_IXOTH 00001 其他用户具可执行权限上述的文件类型在 POSIX 中定义了检查这些类型的宏定义

21、S_ISLNK (st_mode) 判断是否为符号连接

22、S_ISREG (st_mode) 是否为一般文件

23、S_ISDIR (st_mode) 是否为目录

24、S_ISCHR (st_mode) 是否为字符装置文件

25、S_ISBLK (s3e) 是否为先进先出

26、S_ISSOCK (st_mode) 是否为socket 若一目录具有sticky 位 (S_ISVTX), 则表示在此目录下的文件只能被该文件所有者、此目录所有者或root 来删除或改名.


返回值:执行成功则返回0,失败返回-1。

2.eg

#include <stdio.h>

#include <stdlib.h>

#include <sys/stat.h>

#include <unistd.h>

int main()

{

   

    struct stat buff;

    stat("f:\\lanyue.txt", &buff);

    

    printf("文件大小为 %d 字节\n",buff.st_size);

    printf("该文件的设备编号为 %d \n",buff.st_dev);

       

       return(0);

}

C语言 文件操作(七)的更多相关文章

  1. go语言文件操作,这期资料比较详细( 欢迎加入go语言群: 218160862 )

    go语言文件操作,这期资料比较详细 欢迎加入go语言群: go语言深圳群 golang深圳 218160862 点击加入 文件操作 func Open(name string) (file *File ...

  2. C语言文件操作

    C语言文件操作,以下以基本的例子和说明来展开怎么通过C语言来进行文件操作. 操作文件,我们得需要知道什么?当然是路径和文件名. 首先我需要知道我操作的文件在哪里,叫什么名字.在C语言中还存在一个打开方 ...

  3. C 语言文件操作

    C 语言文件操作 1. 数据流:     程序与数据的交互以流的形式进行.fopen 即打开数据流,fclose 即刷新数据流.     所谓数据流,是一种抽象,表示这段数据像流一样,需要逐步接收,不 ...

  4. C语言文件操作函数

    C语言文件操作函数大全 clearerr(清除文件流的错误旗标) 相关函数 feof表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * str ...

  5. C语言文件操作解析(五)之EOF解析(转载)

      C语言文件操作解析(五)之EOF解析 在C语言中,有个符号大家都应该很熟悉,那就是EOF(End of File),即文件结束符.但是很多时候对这个理解并不是很清楚,导致在写代码的时候经常出错,特 ...

  6. 【转】C语言文件操作解析(三)

    原文网址:http://www.cnblogs.com/dolphin0520/archive/2011/10/07/2200454.html C语言文件操作解析(三) 在前面已经讨论了文件打开操作, ...

  7. C语言文件操作函数大全(超详细)

    C语言文件操作函数大全(超详细) 作者: 字体:[增加 减小] 类型:转载 本篇文章是对C语言中的文件操作函数进行了详细的总结分析,需要的朋友参考下   fopen(打开文件)相关函数 open,fc ...

  8. C语言文件操作 FILE结构体

    内存中的数据都是暂时的,当程序结束时,它们都将丢失.为了永久性的保存大量的数据,C语言提供了对文件的操作. 1.文件和流 C将每个文件简单地作为顺序字节流(如下图).每个文件用文件结束符结束,或者在特 ...

  9. C语言文件操作相关函数

    在实际应用中,我们往往需要对文件进行操作,下面我将介绍C语言的一些关于操作文件的函数. 一.计算机文件 计算机文件是以计算机硬盘为载体存储在计算机上的信息集合,是存储在某种长期储存设备上的一段数据流. ...

  10. 关于C语言文件操作

    关于C语言的文件操作之前我也写过一篇博客来介绍,但是当时写的很不全面,只是简单的使用了一下 ,今天再从新学习一下. 1.文件的写 首先还是先看一个简单的例子: include<stdio.h&g ...

随机推荐

  1. vue基础----自定义组件directive ,bind,update,insert

    <div id="app"> <input type="text" v-limit.3="msg" v-focus> ...

  2. 人见人爱A-B 题解

    参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法运算.(当然,大家都知道集合的定义,就是 ...

  3. OneNote代码高亮

    向OneNote 2016安装NoteHighlight 下载.msi 文件,下载链接 下载之前查看自己的电脑上安装的OneNote版本以及位数(32-64) 查看方法:文件->选项->关 ...

  4. Python - 面向对象(二)类方法、静态方法

    面向对象的各种方法 静态方法 - @staticmethod class Person(): name = "cool guy" @staticmethod def static( ...

  5. tomcat启动时间5分钟左右org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [342,445] milliseconds.

    org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance ...

  6. 2. python提示:TypeError: unhashable type: 'list'

    原因是,python字典的key不支持list类型和dict类型,需要转换 错误时 将list类型强制转换成string,用"".join(list). 修改后:

  7. JDK环境的配置,及运用

    JAVA为什么可以跨平台 1.JDK配置环境变量 步骤:打开控制面板中系统和安全------系统-----找到高级系统设置点击属性------高级----环境变量------系统变量(JAVA_HOM ...

  8. C++技法杂记

    C++ 技法杂技杂记 1. 枚举 1.1 枚举继承(Enum Inheritance) struct Enum{ enum{ One = 1, Two, Last }; }; struct EnumD ...

  9. Windows下利用Chrome调试IOS设备页面

    本文介绍如何在 Windows 系统中连接 iOS设备 并对 Web 页面进行真机调试 必须前提 iOS设备.数据线 Node.js 环境 Chrome 浏览器 环境准备 安装Node环境 参考Nod ...

  10. [Docker8]Dockerfiles

    Comment INSTRUCTION arguments FROM 基于哪个base镜像 RUN 执行命令并创建新的镜像层,run经常用于安装软件包 MAINTAINER 镜像创建者 copy 将文 ...