如何获取系统下目录的文件系统类型?

嵌入式ARM 2023-03-22 13:10
最近看到一个问题,如何获取前系统的件类型?
这个时候就要介绍下/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文件包含六列:

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

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

#include 
#include 
#include 

#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

END

来源:嵌入式与Linux那些事

版权归原作者所有,如有侵权,请联系删除。

推荐阅读
从STM32转到嵌入式Linux驱动开发
让嵌入式工程师欲罢不能的7个小网站(资源篇)
ChatGPT实现51、STM32、树莓派等各种点灯程序

→点关注,不迷路←

嵌入式ARM 关注这个时代最火的嵌入式ARM,你想知道的都在这里。
评论 (0)
  • FPGA设计——基于团队的最佳实践

    这本书给你实践的经验,是最佳的实用设计方法学

    所需E币: 5 2023-06-08 14:15 大小: 16.87MB 上传者:二月半

  • 基于JAVA的某店POS积分管理系统设计(包含源代码及论文)
    基于JAVA的某店POS积分管理系统设计(包含源代码及论文)
  • 基于JAVA的物业管理系统设计与实现(包含论文及源代码)
    基于JAVA的物业管理系统设计与实现(包含论文及源代码)
  • 基于JAVA+SQL电子通讯录带系统托盘(源代码及配置文档)
    基于JAVA+SQL电子通讯录带系统托盘(源代码及配置文档)
  • 基于JAVA的RSA文件加密软件的设计与实现(源代码+论文)
    基于JAVA的RSA文件加密软件的设计与实现(源代码+论文)
  • 基于JAVA的SNMP网络设备MIB信息采集(论文+源代码)
    基于JAVA的SNMP网络设备MIB信息采集(论文+源代码)
  • Solidity从入门到精通课(转型区块链必修课)
    学完《Solidity从入门到精通课(转型区块链必修课)》你将收获:
    掌握Solidity智能合约开发技巧
    掌握Solidity语法
    掌握以太坊私链搭建

    课程介绍:

    很多人对于区块链有所了解,但对于区块链开发始终一知半解。如果把区块链理解为数据库的话,智能合约相当于这个数据库的SQL,也是学习区块链应用开发的必经之路。本课程为Solidity智能合约的精讲课程,老师以代码边写边讲的方式向大家展示Solidity的写法与设计理念。

    1、编译器升级:本课程是针对之前的Solidity智能合约教程的升级版,区块链技术升级更新较快,目前编译器的版本已经达到了0.8.x,虽然与0.6.x版本的编译器语法差别不算太大,但仍然会对部分同学学习造成困扰。本课程是采用0.8.7版本编译器版本为基础进行代码设计与讲解。
    2、实战项目升级:本课程除了借鉴之前课程使用的案例库之外,又增加了多签存证、多签结婚证书、产品溯源等合约项目。
    3、Geth升级:以太坊客户端更新也带来了一些参数上的变化,同样需要注意。
    4、代码驱动:课程内讲授的代码以边写边讲的方式介绍,也建议同学们一同练习。
    5、课程服务:课程源码可以下载。
    第一章:智能合约概念与环境准备
    第二章:Solidity基础语法
    第三章:智能合约基础案例
    第四章:ERC标准
    第五章:可升级合约与设计模式
    第六章:多签存证案例
    第七章:永载史册的结婚证书
    第八章:商品溯源案例

  • 基于JAVA的本地监听与远程端口扫描设计(源代码+论文)
    基于JAVA的本地监听与远程端口扫描设计(源代码+论文)
  • 法拉电容点焊机PCB与avr单片机程序

    法拉电容点焊机PCB与avr单片机程序

    法拉电容点焊机PCB与avr单片机程序

    法拉电容点焊机PCB与avr单片机程序

  • 基于JAVA的画图形学程序设计与实现(包含论文及源代码)
    基于JAVA的画图形学程序设计与实现(包含论文及源代码)
  • 跟我一起写DApp(转型区块链开发推荐课程)
    分享课程——《跟我一起写DApp(转型区块链开发推荐课程)》,课程内容上主要分为3部分:项目背景以及项目级智能合约实战;以太坊SDK使用以及后端服务开发;fisco-bcos简介及区块链应用实战。

    本课程属于讲师个人原创课程,并非照搬国外技术开发课程,课程中可以学习Go-web开发,gin框架的使用,提升智能合约开发能力,授课风格以代码驱动为主,希望学习者能够积极动手实践,并在评论区交流互动,分享自己的学习心得和体会。课程源码可以供学习者下载。

    第一章:课程简介与环境准备
    第二章:项目需求与智能合约实战
    第三章:以太坊go-sdk使用
    第四章:后端应用开发实战
    第五章:联盟链fisco-bcos使用介绍
    第六章:基于fisco-bcos应用实战

  • 最近在使用串口读一些数据,但是总会出现些发、送之间的冲突问题,为了弄清楚问题的所在,于是产生了想法,做了一个日志保存。[code]void Widget::SaveLogTxt(QString dat ){ QDateTime currenttime = QDateTime::currentDateTime(); QString strDate = currenttime.toString("yyyy/MM/dd"); QString strTime = currenttime
    E_ARM 2023-06-09 10:31 176浏览
  • 增加电池寿命的秘诀 1.新买的电车要先充满几次吗?把电车电池完全充满这个操作,在专业上叫锂电池化成,是电车在出厂之前激活电池的一道工序,车主完全没必要这样做。《汽车大数据应用研究报告》里明确指出充放电深度是表征电池健康度的重要参数,充放电深度增加,释放电量变大,使电池的健康度衰减非常明显。所以在日常用车的时候我们尽量把电池的电量维持在20%~80%之间,这样能显著提升电池的使用寿命。1. 电池寿命会受温度影响吗?锂电池的理想工作温度为25摄氏度,工作温度过高或者过低都会引发电
    四川英特丽科技有限公司 2023-06-08 10:42 184浏览
  • 前段时间出了接近一个月的差,没来得及及更新试用报告,有点不好意思,今天抽空过来写一下自己的看书的心得以及对于整个书籍的一些认知和看法,希望对大家能够有一定的帮助,也希望可以和大家一起探讨进步。以前自己都是使用的Altium Designer做开发设计的,大学的时候就开始接触,作为个人爱好延续至今,对于PADS也是有所耳闻,只是一直没有机会来了解,根据我个人的经验来看,按照以前使用Altium 的经验来说,PADS设计指南 无论说是从流程步骤上以及类容的细致程度上都还是很不错的,从设计流程、原理图
    君莫笑啊 2023-06-08 11:21 216浏览
  • CS5466支持dsc1.1/12a压缩视频传输,是一款Type-C转HDMI8K30HZ或者4K144HZ方案芯片,Type-C/DP1.4转HDMI2.1的显示协议转换芯片, 内部集成了PD3.0及DSC decoder.CS5466电路原理图参考:CS5466芯片产品参数特性:1. Type-C/DP(2lanes)to HDMI2.1 8K30或者4K144产品。2. 支持HDMI2.1 FRL。3. 集成DSC1.2a decoder。4. DSC支持RGB, YCbCr4:4:4,
    QQ1540182856 2023-06-09 09:52 177浏览
  • 近年来,伴随着智慧化港口的大潮流,经纬恒润L4高级别智能驾驶业务产品也陆续扎根港口自动驾驶多个项目中,帮助港口实现无人水平运输自动化,达到降本增效的效果,助力客户实现智慧化绿色港口。   在整个港口水平运输场景中,经纬恒润提供了端到端的车、路、网、云、图全栈式自研解决方案,包含自动驾驶系统、路侧车路协同、基于5G网络的远程遥控驾驶、车队调度管理平台、数字孪生、仿真系统、高精地图等专业模块,组成了一套完整的智慧港口解决方案。本篇专门介绍其中的自动驾驶系统。  
    hirain 2023-06-09 11:29 189浏览
  • 电源适配器CE认证标准测试项目,电子产品现在用的是相当的广,常见的产品就一大堆,比如说手机电脑等都会使用到电源适配器。电源适配器适用范围很广,不仅在移动设备端,在其它领域也会应用到。电源适配器CE认证,一般会做CE认证中的低电压指令LVD和电磁兼容指令EMC,欧洲能效认证ERP,RoHS等。下面具体来看看认证这么做吧。电源适配器为什么要做CE认证?CE认证制度下的LVD低电压指令涵盖了交流50V-1000V,直流75V-1500V的所有带电产品,EMC指令涵盖了所有有电路板产生电磁辐射的带电产品
    陈丽莎 2023-06-08 14:09 239浏览
  • 近期有点全身心投入到了嵌入式驱动的开发意思了,起早贪黑的学习。不过也是,人生的路都是在不断地学习中度过的。对于干了几年的硬件工程师而言,不说硬件是不是很牛了,就是想换换脑子,整天三极管、电阻、电容的,确实让人乏味。思来想去,硬件是软件的基座,驱动是软件沟通硬件的桥梁。倒不如自己整点知识,也方便自己以后调试硬件不是,再说了从软件角度去理解硬件思维,会有很多不同的收获不是。 奋战了一个月,倒是把驱动的基本框架了解七七八八了,兴致使然,图像采集感觉还不错,公司有产品当开发板,也是省下了大部分的学
    二月半 2023-06-08 12:09 692浏览
  • 低温型产品概述:霍尔效应测试仪由电磁铁、电磁铁电源、高精度恒流源、高精度电压表、霍尔效应样品支架、标准样品、高低温杜瓦,控温仪,系统软件组成。为本仪器系统专门研制的JH10效应仪将恒流源,六位半微伏表及霍尔测量复杂的切换继电器——开关组装成一体,大大减化了实验的连线与操作。JH10可单独做恒流源、微伏表使用。用途:用于测量半导体材料的载流子浓度、迁移率、电阻率、霍尔系数等重要参数,而这些参数是了解半导体材料电学特性必须预先掌控的,因此霍尔效应测试系统是理解和研究半导体器件和半导体材料电学特性必*
    锦正茂科技 2023-06-09 13:16 138浏览
  • 半导体制冷片是电子器件中重要的辅助元件,用于控制器件的温度,从而保证器件的稳定性和可靠性。在半导体制冷片的制造过程中,半导体制冷片的基板材料选择是非常关键的,因为基板材料的性能会直接影响到制冷片的性能。同时作为精密制冷片新型技术,对陶瓷基板的要求也高于普通基板。1.外观要求:严格的铜面平整度,粗糙度要求控制在0.5um以内,铜面上不允许有凹坑、铜颗粒、氧化、任何形式的外观划伤等。2.尺寸要求:完成板厚控制公差在10-20um以内,而陶瓷板材的来料公差就有±30un公差,这就意味着需要挑选公差范围
    斯利通陶瓷电路板 2023-06-08 11:50 198浏览
  • MSDS中干电池、铅酸蓄电池、锂电池正负极材料介绍191-0751-6775一、干电池干电池也叫锰锌电池,所谓干电池是相对于伏打电池而言,所谓锰锌是指其原材料。针对其它材料的干电池如氧化银电池,镍镉电池而言。锰锌电池的电压是15V。干电池是消耗化学原料产生电能的。它的电压不高,所能产生的持续电流不能超过1安培。锌锰干电池:正极材料:锰、石墨棒负极材料:锌镁锰干电池:正极材料:二氧化锰粉、氯化铵及碳黑组成的一个混合糊状物负极材料:镁筒锌空气电池:正极材料:用活性炭吸附空气中的氧或纯氧作为正极活性物
    陈丽莎 2023-06-09 16:43 150浏览
  • 在过去的20年,传感器厂商不断研究创新的测量原理和敏感材料,这些成果能让我们用到高集成、低成本的传感器,其中,最成功也是最具颠覆性的,无疑是MEMS技术在传感器制造中的应用。MEMS技术在传感器的大规模应用,让传感器的小型化、低功耗、智能化成为可能,从而推动了传感器在物联网、消费电子、汽车电子等领域的广泛应用,促进了数字经济的发展和智能时代的到来。可以说,在过去20年,MEMS颠覆和扩展了传感器。传感器专家网https://www.sensorexpert.com.cn专注于传感器技术领域,致力
    传感器专家网 2023-06-08 19:28 204浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦