说明
描述
代码
#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/sysmacros.h>
#include <time.h>
int main(int argc, const char *argv[])
{
struct stat st; // 一个长方形内存
int retval;
if (argc <= 1)
{
printf("参数太少了 老铁!");
}
retval = stat(argv[1], &st); // 长方形丢进去 写上内容
if (retval == -1)
{
printf("出错了!\n");
return 0;
}
// 查看文件属性
switch (st.st_mode & S_IFMT)
{
case S_IFSOCK:
printf("这是个套接字文件\n");
break;
case S_IFREG:
printf("这是个普通文件\n");
break;
case S_IFLNK:
printf("这是个软连接文件\n");
break;
case S_IFBLK:
printf("这是个块文件\n");
break;
case S_IFCHR:
printf("这是个字符文件\n");
break;
case S_IFDIR:
printf("这是个目录文件\n");
break;
case S_IFIFO:
printf("这是个管道文件\n");
break;
}
printf("文件结点号: %lu\n", st.st_ino); // 1. 文件节点
printf("reg设备号:\t主: %d\t从: %d\n", major(st.st_dev), minor(st.st_dev)); // 2. 文件设备号 主 从 一分为二
printf("raw设备号:\t主: %d\t从: %d\n", major(st.st_rdev), minor(st.st_rdev)); // 2. 文件设备号 主 从 一分为二
printf("文件大小: %lu\n", st.st_size); // 3. 文件大小size
printf("文件块大小: %lu\n", st.st_blksize); // 4. 文件块大小blksize
printf("文件块数: %lu\n", st.st_blocks); // 5. 文件块数blocks
printf("访问时间(ctime函数自动补\\n): %s", ctime((time_t *)&st.st_atim)); // 5. 访问时间acess time
printf("修改时间(ctime函数自动补\\n): %s", ctime((time_t *)&st.st_mtim)); // 6. 修改时间manage time
printf("创建时间(ctime函数自动补\\n): %s", ctime((time_t *)&st.st_ctim)); // 7. 创建时间create time
return 0;
}