C 语言编程 — stat 文件操作

Posted 范桂飓

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C 语言编程 — stat 文件操作相关的知识,希望对你有一定的参考价值。

目录

文章目录

stat 库

stat(status,状态)库,用于获取文件或目录的状态信息,如文件大小、创建时间、修改时间等,以及提供了对系统文件和目录进行操作的接口。

结构体

  • struct stat :描述文件和目录的元数据信息,包括文件类型、文件大小、权限、时间戳等。
struct stat  
	dev_t       st_dev;         /* ID of device containing file */
	ino_t       st_ino;         /* File serial number */
	mode_t      st_mode;        /* File type and permissions */
	nlink_t     st_nlink;       /* Number of hard links */
	uid_t       st_uid;         /* User ID of the file */
	gid_t       st_gid;         /* Group ID of the file */
	dev_t       st_rdev;        /* Device ID */
	off_t       st_size;        /* file size, in bytes */
	blkcnt_t    st_blocks;      /* blocks allocated for file */
	blksize_t   st_blksize;     /* optimal blocksize for I/O */
	time_t      st_atime;       /* time of last access */
	time_t      st_mtime;       /* time of last data modification */
	time_t      st_ctime;       /* time of last status change */
;
  • struct timespec:描述时间戳,包括秒数和纳秒数。

函数接口

  1. 获取指定路径的文件或目录的元数据信息,并将结果存储到 buf 中。
int stat(const char *path, struct stat *buf) 
  1. 获取文件描述符 fd 所关联的文件的元数据信息,并将结果存储到 buf 中。
int fstat(int fd, struct stat *buf) 
  1. 获取符号链接文件的元数据信息,并将结果存储到 buf 中。如果 path 是一个符号链接,那么获取的是符号链接指向的文件的元数据信息,而不是符号链接本身的元数据信息。
int lstat(const char *path, struct stat *buf) 
  1. 修改指定路径的文件或目录的权限。
int chmod(const char *path, mode_t mode) 
  1. 创建指定路径的目录,并设置权限为 mode。
int mkdir(const char *pathname, mode_t mode) 
  1. 创建指定路径的文件,文件类型和权限由 mode 指定,设备号由 dev 指定。
int mknod(const char *pathname, mode_t mode, dev_t dev) 

ST mode 常量

文件类型

  • S_IFMT :用于屏蔽文件类型的位掩码;
  • S_IFSOCK :套接字文件类型;
  • S_IFLNK :符号链接文件类型;
  • S_IFREG :普通文件类型;
  • S_IFBLK :块设备文件类型;
  • S_IFDIR :目录文件类型;
  • S_IFCHR :字符设备文件类型;
  • S_IFIFO :管道文件类型;

文件权限

  • S_IRUSR :用户可读权限;

  • S_IWUSR :用户可写权限;

  • S_IXUSR :用户可执行权限;

  • S_IRGRP :组可读权限;

  • S_IWGRP :组可写权限;

  • S_IXGRP :组可执行权限;

  • S_IROTH :其他人可读权限;

  • S_IWOTH :其他人可写权限;

  • S_IXOTH :其他人可执行权限;

以上是关于C 语言编程 — stat 文件操作的主要内容,如果未能解决你的问题,请参考以下文章

如何用C语言实现在linux下开发软件 请大虾帮忙解决

C语言文件IO操作的一些其它函数

C 语言文件操作 ( 使用 fread 和 fwrite 实现二进制文件的拷贝 | stat 统计文件大小 | feof 判定文件结尾 )

C语言 stat()函数获得文件大小需不需要打开文件?就是stat()函数是怎么获得文件的大小的?

c语言的程序是怎样在屏幕上输出的?

c语言高手们请问一下-stat这个怎么用行么?