【Linux】程序内获取文件系统挂载信息

news2024/10/6 10:43:06

Linux shell可通过查看/etc/mtab或者/proc/mounts文件来获取当前文件系统挂载信息,示例:

程序内读取/etc/mtab或者/proc/mounts,解析字符串较为繁琐,可以使用mntent提供的方便函数:

FILE *setmntent(const char *filename, const char *type);
struct mntent *getmntent(FILE *filep);
int endmntent(FILE *filep);


(1)setmntent用来打开/etc/mtab或者同样格式的table文件
参数 filename为table文件的路径(例如/etc/mtab),参数type为打开文件的模式(与open类型,例如“r”为只读打开)
成功时,返回FILE指针(用于mntent操作),失败时返回NULL
 
(2)getmntent用来读取文件的每一行,解析每一行的参数到mntent结构,mntent结构的存储空间是静态分配的(不需要free),结构的值会在下一次getmntent时被覆盖

mntent结构定义:

struct mntent
{
char *mnt_fsname;  
char *mnt_dir;     
char *mnt_type;    
char *mnt_opts;    
int mnt_freq;      
int mnt_passno;    
};


参数filep是setmntent返回的FILE指针
成功时返回指向mntent的指针,错误时返回NULL
 
(3)endmntent用来关闭打开的table文件,总是返回1

示例程序:

#include
#include
#include
#include

int main(void)
{
char *filename ="/proc/mounts";
FILE *mntfile; 
struct mntent *mntent;
  
mntfile = setmntent(filename,"r");
if (!mntfile) {
printf("Failed to read mtab file, error [%s]\n",
strerror(errno));
return -1;

while(mntent = getmntent(mntfile))
printf("%s, %s, %s, %s\n",
mntent->mnt_dir,
mntent->mnt_fsname,
mntent->mnt_type,
mntent->mnt_opts);
 
endmntent(mntfile);
return 0;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/601375.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下socketpair系统API调用使用说明

目录 1.socketpair函数说明 2.socketpair使用举例 在阅读nginx源码时,发现其调用socketpair来实现master和worker进程之间进行数据交互。其代码如下: 思考:master和worker进程是父子关系,有亲属关系的进程通过pipe/pipe2&#x…

Genio 500核心板,MT8385安卓核心板定制方案

Genio 500(MT8385)核心板搭载Arm Neon引擎的四核Arm Cortex-A73和Cortex-A53,提供必要的处理能力,可以通过2D/3D图形加速器进行增强,然后在高分辨率触摸屏显示器上进行可视化。为了提供先进的多媒体应用和服务&#xf…

电商后台管理项目vue3+express

目录 源码 1.系统功能设计 技术栈:采用前后端分离的开发模式前端:Vue3、Vue-router、Element-Plus、Axios、Echarts后端:Node.js、Express、Jwt、Mysql、Sequelize 2.项目初始化 打开cmd,输入vue ui(vue-cli版本要…

Java程序设计入门教程--日期类Date

java.util.Date类是一个简单的日期处理类,它包含了一些关于时间和日期的操作方法,精确到毫秒。它的常用方法如表所示: 方法 说明 public Date() 构造方法,分配 Date 对象并用当前时间初始化此对象,以表示分配它的时…

2023年6月DAMA-CDGA/CDGP数据治理认证你考了吗?

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

NUC980编译错误,arm-linux-gcc: Command not found

报错问题: make: arm-linux-gcc: Command not found /bin/sh: 1: arm-linux-gcc: not found dirname: missing operand 昨天编译的时候,还小甜甜,今天就牛夫人了。啥也没干啊! -----------------------------------------------…

亚马逊云科技与涂鸦智能持续赋能开发者,推动全行业的数智化创新

近几年,智能产品已渗透至人们生活的方方面面,IoT技术市场规模也随之获得较快增长,据IoT Analytics的数据,2023年IoT市场规模将增长19%,或成为经济波动周期的一大黑马赛道,但下游应用场景与需求的高度碎片化…

从零开始Vue3+Element Plus后台管理系统(17)——一键换肤的N种方案

暗黑模式 基于Element Plus和Tailwind CSS灵活的设计,我们很容易在项目中实现暗黑模式,具体可以参考之前的文章《从零开始写一个Vue3Element Plus的后台管理系统(二)——Layout页面布局的实现》 换肤方案 如果需要给用户提供更多主题,更丰…

【Android项目开发】聊天功能-主界面设计(对标企业需求)

文章目录 一、引言二、详细设计1、解决需求(1)图形问题(2)文本长度问题(3)时间转换问题 2、UI设计(1)主界面(2)适配器 3、Adapter适配器4、测试参数 三、附录…

龙芯2K1000实战开发-USB/PCIe/HDMI外设开发

文章目录 概要整体架构流程技术名词解释技术细节小结概要 提示:这里可以添加技术概要 本文主要针对2k1000的PCIE和USB外设的国产化设计 整体架构流程 提示:这里可以添加技术整体架构 使用2k1000自带的以太网pcie控制器,USB控制器。 考虑到龙芯没有HDMI接口,选用龙讯半…

从小白走向进阶:如何系统的学习it技术

无论是初学者还是有经验的专业人士,在学习一门新的IT技术时,都需要采取一种系统性的学习方法。那么作为一名技术er,你是如何系统的学习it技术的呢。 一、it技术介绍 1. Spring、SpringMVC、MyBatis、MyBatis-Plus、tkMapper,Spri…

分享一组真实的按钮

先看效果图&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>发光的按钮</title><style>* {border: 0;box-sizing: border-box;margin: 0;padding: 0;…

VMware ESXi 8.0U1a macOS Unlocker OEM BIOS (标准版和厂商定制版)

VMware ESXi 8.0 Update 1a macOS Unlocker & OEM BIOS (标准版和厂商定制版) ESXi 8.0U1 标准版&#xff0c;Dell HPE 联想 浪潮 定制版 请访问原文链接&#xff1a; https://sysin.org/blog/vmware-esxi-8-u1-oem/&#xff0c;查看最新版。原创作品&#xff0c;转载请保…

pytorch实战 -- 初窥张量

张量的创建 张量&#xff08;Tensors&#xff09;类似于NumPy的ndarrays&#xff0c;但张量可以在GPU上进行计算。 所以从本质上来说&#xff0c;PyTorch是一个处理张量的库。一个张量是一个数字、向量、矩阵或任何n维数组。 下面分别展示了0维张量到n位张量&#xff1a; im…

SVN客户端的下载和安装(图文超详细)

目录 0.准备工作 1.SVN客户端安装包安装 2.安装语言包 0.准备工作 博主安装环境&#xff1a;windows x86 SVN客户端下载地址&#xff1a;下载 SVN (tortoisesvn.net) 【下载地址中需下载符合电脑版本的安装包&#xff0c;以及语言包】 注&#xff1a;下载两个包后&#…

Linux操作系统相关介绍

目录 一、认识Linux 二、Linux特点总结 三、Linux版本 &#xff08;1&#xff09;Linux内核版 &#xff08;2&#xff09;Linux发行版 一、认识Linux • 1991年&#xff0c;芬兰的一名大学生Linus Torvalds开发了linux内核 • Linux是一种开放源代码的、自由的、免费的类…

Zookeeper面试这一篇就够了

谈下你对 Zookeeper 的认识&#xff1f; ZooKeeper 是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名服务、分布式同步、组服务等。 ZooKeeper 的目标就是封装好…

面试官:“你知道什么情况下 HTTPS 不安全么”

面试官&#xff1a;“HTTPS的加密过程你知道么&#xff1f;” 我&#xff1a;“那肯定知道啊。” 面试官&#xff1a;“那你知道什么情况下 HTTPS 不安全么” 我&#xff1a;“这....” 越面觉得自己越菜&#xff0c;继续努力学习&#xff01;&#xff01;&#xff01; 什麽是中…

STM32使用HAL库,串口收发一段时间后出错问题及解决

STM32使用HAL库&#xff0c;串口收发一段时间后出错 问题及解决方法问题1&#xff1a;串口溢出解决方法问题2&#xff1a;串口同时收发&#xff0c;一段时间后串口接收不工作解决办法 问题及解决方法 当STM32使用HAL库进行开发时&#xff0c;偶尔会遇到串口收发数据量大时&…

开源创新 协同融合|2023 开放原子全球开源峰会开源协作平台分论坛即将启幕

由开放原子开源基金会主办&#xff0c;阿里云、CSDN 等单位共同承办的开源协作平台分论坛即将于 6 月 12 日上午在北京经开区北人亦创国际会展中心隆重召开。作为 2023 开放原子全球开源峰会的重要组成部分&#xff0c;开源协作平台分论坛将聚焦于开源代码平台的创新功能、用户…