最近看到一个问题,如何获取当前系统的文件类型?

这个时候就要介绍下/proc/mounts文件:这个文件以/etc/mtab文件的格式给出当前系统所安装的文件系统信息。同时也能反映出任何手工安装从而在/etc/mtab文件中没有包含的文件系统。

我们可以通过cat /proc/mounts查看挂载文件系统的状态。

root@firefly:~# cat /proc/mounts
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,nosuid,relatime,size=1960196k,nr_inodes=490049,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,noexec,relatime,size=393192k,mode=755 0 0
/dev/mmcblk1p7 /root-ro ext4 ro,relatime,data=ordered 0 0
/dev/mmcblk1p8 /userdata ext4 rw,relatime,data=ordered 0 0
overlayroot / overlay rw,relatime,lowerdir=/root-ro,upperdir=/userdata/rootfs_overlay,workdir=/userdata/rootfs_overlay-workdir/_ 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
tmpfs /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0

mounts文件包含6列

  • Device mount的设备
  • Mount Point 挂载点,也就是挂载的路径
  • File System Type 文件系统类型,如ext4、xfs等
  • Options 挂载选项,包括读写权限等参数
  • 无用内容,保持内容和**/etc/fstab**格式一致
  • 无用内容,保持内容和**/etc/fstab**格式一致

下面写个程序提取下设备名,挂载目录,文件系统类型等参数。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define MOUNTS_INFO        "/proc/mounts"typedef struct
{char devName[32];char dirName[16];char fsType[16];char authority[16];
}PartitionInfo;int getPartitionInfo(char *pPartitionName,PartitionInfo *pPartitionInfo)
{FILE *fp = NULL;char str[128] = {0};char *p = NULL,*q = NULL,*pTmpStr = NULL;int i = 0;fp = fopen(MOUNTS_INFO, "r");if (fp < 0){printf("open %s failed\n",MOUNTS_INFO);return -1;}while (NULL != fgets(str,sizeof(str),fp)){p = strstr(str,pPartitionName);if (NULL != p){for(i = 0;i < 4; i++){if (0 == i){q = strtok_r(str," ",&pTmpStr);strcpy(pPartitionInfo->devName,q);}if (1 == i){q = strtok_r(p," ",&pTmpStr);strcpy(pPartitionInfo->dirName,q); }  if (2 == i){q = strtok_r(p," ",&pTmpStr);strcpy(pPartitionInfo->fsType,q); }  if (3 == i){q = strtok_r(p,",",&pTmpStr);strcpy(pPartitionInfo->authority,q);}   p = pTmpStr;                         }        }}fclose(fp);return 0;
}
int main()
{int status = -1;PartitionInfo partitionInfo;memset(&partitionInfo,0,sizeof(PartitionInfo));status = getPartitionInfo("/dev/pts",&partitionInfo);if(status < 0){printf("get  partition info failed\n");return -1;}printf("devName:%s\n",partitionInfo.devName);printf("dirName:%s\n",partitionInfo.dirName);printf("fsType:%s\n",partitionInfo.fsType);printf("authority:%s\n",partitionInfo.authority);return 0;
}

运行结果

root@firefly:~/mnt# ./get_fsType
devName:devpts
dirName:/dev/pts
fsType:devpts
authority:rw

如何获取系统下目录的文件系统类型相关推荐

  1. X86_64(优麒麟)系统下构建 i386 文件系统并编译Box86运行wine

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.在 X86_64 Linux 系统下搭建 i386 文件系统 二.配置 Schroot 工具使得文件系统切换更方便 ...

  2. redhat和ubuntu系统下挂载ntfs文件系统的方法(转载)

    1.首先确定你的linux kernel版本是什么(Redhat9.0默认的kernel版本是2.4.20-8 )  #> rpm -qa|grep kernel  会显示类式的如下信息:  k ...

  3. linux系统可支持多种文件系统类型,Linux文件系统类型简介及支持的文件系统汇总--Linux入门到精通系列...

    不同的操作系统需要使用不同类型的文件系统,为了与其他操作系统兼容,以相互交换数据,通常操作系统都能支持多种类型的文件系统,比如Windows 2000 Server,系统默认或推荐采用的文件系统是NT ...

  4. SigmaStar SSD202 openwrt 系统下ubi根文件系统挂载过程

    关于UBI介绍可以参考官方文档 http://www.linux-mtd.infradead.org/doc/ubifs.html 下面是一张简介图,大概的介绍就是UBIFS依赖kernel UBI子 ...

  5. Linux系统下如何实现文件系统配额

    1.配额又称为限额,针对的是分区,不是用户也不是文件,更不是整个硬盘: 2.内核版本必须是2.4以上才支持:查看内核是否支持配额. 3.root是不受配额限制的,只有普通用户才受限制: 4.配额中的术 ...

  6. linux下U盘文件系统类型的识别以及挂载

    手上有装好文件系统的CF一只,插上卡套,类比于U盘. 1.先进入/mnt/目录新建一个usb目录 cd /mnt/ mkidr usb 2.fdisk -l,然后插上U盘,fdisk -l 查看是否有 ...

  7. Windows系统下常见的文件类型及其扩展名

    今天小陈给大家分享一本书上的一个实用表(常见的文件类型及其扩展名)

  8. vb获取系统临时目录 temp

    VB6.0 取得windows 临时目录 temp 代码如下: Private Sub Form_Load() Dim S As String, S1 As String S = Environ(&q ...

  9. Linux之文件系统详解(系统常见目录、磁盘分区、软硬链接)

    Linux系统中一切皆文件,Linux系统中的一切文件都是从" 根(/)"目录开始的,并按照文件系统层次化标准(FHS)采用树形结构来存放文件,以及定义了常见目录的用途. 目录 L ...

最新文章

  1. mongo 创建索引_索引系列:2dsphere索引
  2. 第八十一期:Java性能优化:35个小细节,提升你的Java代码运行效率
  3. MySQL高级 —— 查询性能优化
  4. GitHub上常用命令(工作中几乎每天用到的命令)
  5. 使用xcap进行更改报文并进行回放以及回放报文只能看到请求流量看不到响应流量的问题
  6. SQLExpress数据库类型与AttachDbFilename用法
  7. 不骗你,全网首创的超硬核的万字SQL题
  8. 计算机 无法自检,电脑开机不能自检的五大原因
  9. 小米摄像头有onvif协议_小米8SE、魅族16T、荣耀畅玩9A对比
  10. 【数据分析干货】世界杯4强出炉!冠军将花落谁家?看看历年数据!
  11. Expected tensor for argument #1 ‘indices‘ to have one of the following scalar types: Long, Int; but
  12. spring中涉及到的设计模式
  13. laradock 国内版
  14. 计算机公办学校招收人数,2018长沙市小升初微机派位一共有多少人参加
  15. 双活数据中心架构优缺点分析
  16. 2022年全球市场男士防脱发和增长产品总体规模、主要生产商、主要地区、产品和应用细分研究报告
  17. 爬虫「Python」:一次登录,解决爬取淘宝商品评价繁杂的问题——简述 Headers 的使用
  18. 不会CAD制图怎么办?掌握这几个CAD技巧,新手也能快速入门
  19. Python接口自动化测试实战系列
  20. 日常练习!加强网络部分!!

热门文章

  1. ubuntu下u盘变成只读模式
  2. Solr从数据库导入数据(DIH)
  3. Introducing Swift(Swift介绍及其API)
  4. php 统计汉字,PHP 统计实时统计汉字个数和区别
  5. [软件工程] 面向对象设计
  6. 优美图案c语言程序,C语言编程之一个最优美的图案
  7. python从邮箱获取指定邮件_用python提取并统计指定邮箱里的特定邮件 | 学步园
  8. 哲理故事与管理之道(22)-用竞争激励下属
  9. c++如何制作背景音乐
  10. vscode 开发 Java web 急速教程