首页 > 系统相关 >NO.6 Linux 获取文件属性

NO.6 Linux 获取文件属性

时间:2023-10-01 20:56:08浏览次数:45  
标签:输出 文件属性 Linux st break NO.6 printf sb uintmax

 1 /*
 2 用于获取文件的属性和元数据信息,并输出到终端。
 3 程序接受一个参数作为路径名,通过lstat函数获取指定文件的属性信息,并使用printf函数输出到终端。
 4 注释对代码进行了简要解释,帮助理解各个部分的功能。
 5 */
 6 #include <sys/types.h>
 7 #include <sys/stat.h>
 8 #include <stdint.h>
 9 #include <time.h>
10 #include <stdio.h>
11 #include <stdlib.h>
12 #include <sys/sysmacros.h>
13 
14 int main(int argc, char *argv[])
15 {
16     struct stat sb;
17 
18     // 检查参数数量
19     if (argc != 2) {
20         fprintf(stderr, "Usage: %s <pathname>\n", argv[0]);
21         exit(EXIT_FAILURE);
22     }
23 
24     // 获取文件属性
25     if (lstat(argv[1], &sb) == -1) {
26         perror("lstat");
27         exit(EXIT_FAILURE);
28     }
29 
30     // 输出所属设备ID
31     printf("ID of containing device:  [%jx,%jx]\n",
32             (uintmax_t) major(sb.st_dev),
33             (uintmax_t) minor(sb.st_dev));
34 
35     printf("File type:                ");
36 
37     // 输出文件类型
38     switch (sb.st_mode & S_IFMT) {
39     case S_IFBLK:  printf("block device\n");            break;
40     case S_IFCHR:  printf("character device\n");        break;
41     case S_IFDIR:  printf("directory\n");               break;
42     case S_IFIFO:  printf("FIFO/pipe\n");               break;
43     case S_IFLNK:  printf("symlink\n");                 break;
44     case S_IFREG:  printf("regular file\n");            break;
45     case S_IFSOCK: printf("socket\n");                  break;
46     default:       printf("unknown?\n");                break;
47     }
48 
49     printf("I-node number:            %ju\n", (uintmax_t) sb.st_ino);
50 
51     // 输出文件权限模式
52     printf("Mode:                     %jo (octal)\n",
53             (uintmax_t) sb.st_mode);
54 
55     // 输出链接数
56     printf("Link count:               %ju\n", (uintmax_t) sb.st_nlink);
57     
58     // 输出文件所有者信息
59     printf("Ownership:                UID=%ju   GID=%ju\n",
60             (uintmax_t) sb.st_uid, (uintmax_t) sb.st_gid);
61 
62     // 输出首选I/O块大小
63     printf("Preferred I/O block size: %jd bytes\n",
64             (intmax_t) sb.st_blksize);
65     
66     // 输出文件大小
67     printf("File size:                %jd bytes\n",
68             (intmax_t) sb.st_size);
69     
70     // 输出分配的块数
71     printf("Blocks allocated:         %jd\n",
72             (intmax_t) sb.st_blocks);
73 
74     // 输出最后状态更改时间
75     printf("Last status change:       %s", ctime(&sb.st_ctime));
76     
77     // 输出最后访问文件的时间
78     printf("Last file access:         %s", ctime(&sb.st_atime));
79     
80     // 输出最后修改文件的时间
81     printf("Last file modification:   %s", ctime(&sb.st_mtime));
82 
83     exit(EXIT_SUCCESS);
84 }

 

标签:输出,文件属性,Linux,st,break,NO.6,printf,sb,uintmax
From: https://www.cnblogs.com/ChenYuansong/p/17738541.html

相关文章

  • Linux操作系统学习2
    本周学习了Linux操作系统centos的用户管理,了解了用户和组的概念,同时也掌握了创建,修改与删除用户和组的方法。首先就是用户标识,也就是uid与gid,uid就是用户的id,gid就是用户组所属的id。学习了如下命令:查看当前用户登录信息的命令,id。查看文件所有者的命令:ll。查看进程的命令:psau......
  • 第四周Linux教材第七、八章学习笔记——文件操作、系统调用
    第七章7.1 文件操作级别文件操作分5个级别(从低到高):(1)硬件级别:文件操作包括:fdisk——将硬盘、U盘或SDC盘分区;             mkfs——格式化磁盘分区,为系统做好准备;             fsck——检查和维修系统;      ......
  • Linux第五周技术博客
    这周我们学习Linux用户的管理我们需要了解普通用户和超级管理员的区别,用户命令的增删改查,普通用户于超级管理员之间的切换,普通用户之间的切换,普通用户的配置文件操作Linux系统是一个多用户多任务的分时操作系统,每个进程都有一个特定的文件,文件为一个特定的用户拥有。每一个用户......
  • 一键部署可视化Linux内核与驱动调试环境
    dockerrun-itd--privileged--name"linux-driver-debug-test"registry.cn-hangzhou.aliyuncs.com/loongenclave/linux-driver-debug:latest哔哩哔哩视频......
  • Linux系统中驱动面试分享
    1、驱动程序分为几类?字符设备驱动块设备驱动网络设备驱动2、字符设备驱动需要实现的接口通常有哪些open、close、read、write、ioctl等接口。3、主设备号与次设备号的作用主设备号和次设备号是用来标识系统中的设备的,主设备号用来标识设备的类型,次设备号用来标识具体的设备,以便系统......
  • Linux第三周技术博客
    这周我们开始学习Linux文件管理首先我们来学习Linux文件目录与路径,Windows系统以多根的方式组织文件,它可以有多个根目录。而Linux系统所有的文件都在根目录/下,其中箭头指向真实存在的文件。如果用户想要查看根目录下的文件用ls命令,输出结果中不同颜色代表不同的文件类型,蓝色代......
  • linux 设置环境变量
    当我们在Linux下执行一个命令时,报-bash:XXXX:commandnotfound,这和Windows是相同的道理,都是环境变量惹的祸,就是说你的命令的执行文件不在/usr/bin或者/etc/init.d中,他就找不到执行该命令的文件来执行.思路是将该应用的bin目录放入到profile文件中就OK了 1......
  • wordpress搭建-AlmaLinux
    yuminstall-ywget&&wget-Oinstall.shhttp://download.bt.cn/install/install_6.0.sh&&shinstall.sh==================================================================Congratulations!Installedsuccessfully!========================面板账......
  • linux中awk命令对fastq格式的碱基质量体系进行判断
     001、[root@pc1test]#lsa.fastq[root@pc1test]#head-n4a.fastq##测试fastq格式数据@SRR12342886.11/1TCTTCAAAAATTTCTCACAGCTTGTTGTGATCCACACAGTCAAAGGCTTTAAGTGTAGTCAGTGAAGCAGAAGTGGATATTTTTCTGGAATTCCCTTGCTTTCTCTGTGATCCAAGGGATTTGATCTCTGGTTCCTCTG......
  • linux 中删除文本中所有的换行符
     001、tr实现[root@pc1test02]#lsa.txt[root@pc1test02]#cata.txt##测试文件01020304050607080910[root@pc1test02]#cata.txt|tr"\n"""##删除所有的换行符01020304050607080910[root@pc1test02]#cata.txt|......