stat查看文件属性
头文件:
#include <sys/types.h >
#include <sys/stat.h>
#include <unistd.h>
查看文件属性函数有:
int stat(const char *path,struct stat *buf);
int fstat(int fd,struct stat *buf);
int lstat(const char *path,struct stat *buf);
stat函数:
函数原型: int stat (const chat *path,struct stat *buf);
参数一:需要查看的文件路径
参数二:查看后的文件属性保存地址
返回值:成功返回0,失败返回-1
stat结构体如下:
struct stat { 包含主次设备号 /dev/sda
dev_t st_dev; //dev_t —》设备号类型,容纳该文件的那个设备的设备号。 普通文件所在的储存器设备号 major()主设备号
ino_t st_ino; //inode number —》minor()次设备号
mode_t st_mode; //—》文件权限(包含类型)
nlink_t st_nlink; //—》Inode硬链接数●讲清硬链接与软连接的区别,即命令:ln -s为软连接,没有-s为硬链接
uid_t st_uid; //—》文件属主(owner, 拥有者)的用户id
gid_t st_gid; //—》文件属主(owner)的组id
dev_t st_rdev; //—》文件的设备号(假如该文件是设备) 特殊文件设备号(驱动文件)
off_t st_size; //文件内容的长度//st_size对普通文件(文本文件,二进制文件),文件内容的长度
//st_size对目录而言,文件长度通常是一个数的倍数。●目录的内容是文件项数组
//st_size对符号链接文件,符号链接文件的内容是它指向的文件的文件名●大小为指向文件名的字节
blksize_t st_blksize; //block size—》块大小(与具体的硬件相关)
blkcnt_t st_blocks; //—》文件占多少块(block,在linux下面每个block占512bytes)
time_t st_atime; //access time —》最后访问"文件内容"的时间, read/write
time_t st_mtime; //modify time —》最后修改"文件内容"的时间,
time_t st_ctime; //change time —》最后改变"文件属性"的时间,●即改变i-node信息
};
详细解释:
st_dev —》普通文件所在的储存器设备号,即硬盘设备
st_redv—》驱动设备号
st_mode—》文件权限与文件类型获取
使用例子:
判断文件类型:if(S_ISREG(filemsg.st_mode));
获取文件权限:if(S_IFREG&filemsg.st_mode);
使用stat函数获取文件权限与文件大小
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int main(int argv,char **argc)
{
if(argv<2)
{
perror("stat fail no file:");
}
struct stat filemsg;
stat(argc[1],&filemsg);
if( S_IRUSR&filemsg.st_mode|| S_IWUSR && filemsg.st_mode)
{
printf("USR have read or write\n");//判断用户是否有读写程序
}
if(S_IRGRP&filemsg.st_mode|| S_IWGRP && filemsg.st_mode )
{
printf("group have read or write\n");//判断用户组是否有读写程序
}
printf("the file size=%d\n",(int)filemsg.st_size);//打印文件大小
}
测试文件权限函数access();
头文件:
#include <unistd.h>
函数原型:
int access(const char *pathname ,int mode);
参数一:要测试的文件路径
参数二:要测试的权限
R_OK—>可读
W_OK—》可写
X_OK—》可执行
F_OK—》文件是否存在
返回值:成功返回0,失败返回-1
获取文件路径函数
函数原型:
char *getwd(char *buf);
功能:获取文件路径并存放到buf中
注意:该函数存在溢出的危险,因此应谨慎使用
获取环境变量的值:
头文件:
#include <stdlib.h>
函数原型:
char *getenv(const char *name);
删除文件函数
头文件:
#include <stdio.h>
函数原型:
int remove(const char *pathname);
参数一:要删除的文件路径名
返回值:成功返回0,失败返回-1
相关文章
- 系统文件句柄数修改_linux查看文件句柄使用情况
- 信息深入了解Linux:查看U盘信息(linux怎么查看u盘)
- 掌握Linux下查看网卡信息的方法(linux查看网卡信息)
- Linux下安装驱动的步骤探究(linux安装驱动查看)
- 查看Linux系统版本的方法(查linux版本)
- Linux下查看当前目录的命令(linux显示当前目录)
- 查看Oracle数据库配置参数详解(oracle查看配置)
- 查看 Oracle 日志的方法(oracle日志怎么看)
- 如何在Linux中查看文件大小(linux查看文件的大小)
- 探究Linux系统的序列号记录(查看linux序列号)
- 探秘Linux SUSE:了解其特点和使用方法(查看linuxsuse)
- Linux流量监控:十个实用的查看流量命令(linux查看流量命令)
- Linux下查看二进制文件的步骤(linux查看二进制文件)
- Python查看多台服务器进程的脚本分享