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; /* 文件系统类型: ufs, nfs, 等 */
char *mnt_opts; /* 文件系统挂载参数,以逗号分隔 */
int mnt_freq; /* 文件系统备份频率(以天为单位) */
int mnt_passno; /* 开机fsck的顺序,如果为0,不会进行check */
};
  参数filep是setmntent返回的FILE指针
  成功时返回指向mntent的指针,错误时返回NULL
 
(3)endmntent用来关闭打开的table文件,总是返回1
 

示例程序:

#include <stdio.h>
#include <mntent.h>
#include <errno.h>
#include <string.h> 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 -;
} 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 ;
}

【Linux】程序内获取文件系统挂载信息的更多相关文章

  1. python装饰器内获取函数有用信息方法

    装饰器内获取函数有用信息方法 .__doc__用于得到函数注释信息 .__name_用于得到函数名 在函数引用装饰器的时候,函数名会变为装饰器内部执行该函数的名字,所有在直接执行函数名加.__doc_ ...

  2. linux驱动之获取设备树信息

    上一篇文章学习了字符设备的注册,操作过的小伙伴都知道上一篇文章中测试驱动时是通过手动创建设备节点的,现在开始学习怎么自动挂载设备节点和设备树信息的获取,这篇文章中的源码将会是我以后编写字符驱动的模板. ...

  3. Linux:Day8(上) 文件系统挂载和管理工具

    文件系统管理: 将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为称之为挂载: 解除此关联关系的过程称之为卸载: 把设备关联挂载点:Mount Point ...

  4. 微信小程序授权获取用户详细信息openid

    小程序获取用户的头像昵称openid之类 第一种使用wx.getUserInfo直接获取微信头像,昵称 wx.getUserInfo({ success: function (res) { that. ...

  5. 在Linux系统上获取命令帮助信息和划分man文档

    使用历史命令history 打完以后前面会有顺序号的比如1 cd2 ls3 pwd如果需要重新执行cd命令则可以执行 !3 命令 命令补全功能 比如你要执行history命令 可以打上histo+键 ...

  6. Linux C 语言 获取系统时间信息

    比如获取当前年份:        /* 获取当前系统时间 暂时不使用        int iyear = 0;        int sysyear = 0;        time_t now;  ...

  7. 微信小程序open-data获取用户的信息样式设置

    效果图 wxml代码 <view class="userinfo"> <!-- 用户头像 --> <view class="userinfo ...

  8. 【微信小程序】获取用户地理位置权限,二次请求授权,逆解析获取地址

    摘要:微信小程序内获取用户地理位置信息授权,被拒绝后二次获取,获取权限后逆解析得到用户所在省市区等.. 场景:商城类小程序,在首页时需展示附近门店,即用户刚进入小程序时就需要获取到用户位置信息 ste ...

  9. Linux 系统磁盘挂载信息文件

    设置文件系统挂载信息的文件(etc/fstab),使得开机能够自动挂载磁盘分区 文件系统挂载 方法一: 直接挂在,临时生效 # 格式化系统(没有格式化就没有文件系统,放不了数据) dd if=/dev ...

随机推荐

  1. KS-检验(Kolmogorov-Smirnov test) -- 检验数据是否符合某种分布

    Kolmogorov-Smirnov是比较一个频率分布f(x)与理论分布g(x)或者两个观测值分布的检验方法.其原假设H0:两个数据分布一致或者数据符合理论分布.D=max| f(x)- g(x)|, ...

  2. [ActionScript 3.0] flash如何访问父级或者舞台上的变量、函数等的方法

    方法一: 进行类型转换,先将root.parent强制转换为MovieClip类型,再进行使用,如下:MovieClip(root).i.MovieClip(this.parent).i.MovieC ...

  3. JAVA中的定时调度(Timer和TimerTask)

    某些时候我们需要定时去完成一些任务,这里举一个例子:我们需要在3秒钟后打印当前系统时间,此后每隔5秒重复此操作.代码如下: import java.util.TimerTask; import jav ...

  4. Aspose.Cells单元格转换为数字格式

    需要在两个地方设置 //Adding a numeric value to "A2" cell "; worksheet.Cells["A2"].Pu ...

  5. Hibernate注解:一对一主键关联

    情形:两个表,my_site和my_site_company,通过主键site_id唯一关联.my_site的主键是自动增加,my_site_company的主键依赖于my_site. # # Sou ...

  6. HDU1269 迷宫城堡(裸强连通分量)

    Description 为了训练小希的方向感,Gardon建立了一座大城堡,里面有N个房间(N<=10000)和M条通道(M<=100000),每个通道都是单向的,就是说若称某通道连通了A ...

  7. 2015 ACM/ICPC Asia Regional Beijing Online

    时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 You must have seen the very famous movie series,"Mission ...

  8. Jquery 对象转json ,Json转对象。兼容浏览器。

    引入jquery 转json库 [ 文件大小为2.2K] <script type="text/javascript" src="https://jquery-js ...

  9. @valid表单验证demo

    springMVC 表单验证demo  视图层使用的是jsp

  10. Spring SpEL表达式的理解

    Spring的IOC本质就一个容器,也就是一个对象的工厂,我们通过配置文件注册我们的Bean对象,通过他进行对象的组装与床架. SpEL表达式就是一种字符串编程,类似于JS里面的EVAL的作用,通过它 ...