stat 、fstat 、lstat 获取文件信息

  • stat    获取未打开的磁盘中的文件信息
  • fstat  获取已打开文件的文件信息
  • lstat  获取链接文件本身的文件信息
int stat(const char *pathname, struct stat *buf);
int fstat(int fd, struct stat *buf);
int lstat(const char *pathname, struct stat *buf);

struct stat *buf是一个返回型的结构体,调用stat后会被赋值,其中buf.st_mode记录了文件属性

   是一个32位二进制的数,比特位设置不同则表示有不同含义,ubuntu是以8进制显示.

  1. S_ISREG(buf.st_mode)=1则表示是是普通文件
  2. 获取文件权限的方法
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#define File "/tmp/a.txt"
int main(void)
{
   struct stat buf={0};
   stat(File,&buf);
   printf("%o\n",buf.st_mode);
   if((buf.st_mode & S_IRWXU)==S_IRWXU)
    {
	printf("O-rwx\n");
    }
   if((buf.st_mode & S_IRUSR)==S_IRUSR)
    {
        printf("O-可读\n");
    }
    if((buf.st_mode & S_IWUSR)==S_IWUSR)
    {
        printf("O-可写\n");
    }
    if((buf.st_mode & S_IXUSR)==S_IXUSR)
    {
        printf("O-可执行\n");
    }


  return 0;
}

具体用法参考man 手册

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页