- 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进制显示.
- S_ISREG(buf.st_mode)=1则表示是是普通文件
- 获取文件权限的方法
#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 手册