mntent 结构是在 <mntent.h> 中定义,如下:

              struct mntent {
                      char    *mnt_fsname;    /* name of mounted file system */
                      char    *mnt_dir;       /* file system path prefix */
                      char    *mnt_type;      /* mount type (see mntent.h) */
                      char    *mnt_opts;      /* mount options (see mntent.h) */
                      int     mnt_freq;       /* dump frequency in days */
                      int     mnt_passno;     /* pass number on parallel fsck */

};

该结构可以对应/etc/mtab或者/etc/fstab中的每一行的数据,如果是程序有需求要访问/etc/mtab或者/etc/fstab文件,那么使用linux自带的函数getmntent就可以直接获取一行的数据,很方便。setmntent可以根据参数指定的文件及打开类型来创建一个FD,该FD可以传入getmntent函数来获取一行的数据存入mntent结构中,例子如下:

  1. #include <mntent.h>
  2. #include <stdio.h>
  3. #include <errno.h>
  4. #include <string.h>
  5. int main()
  6. {
  7. struct mntent *m;
  8. FILE *f = NULL;
  9. f = setmntent("/etc/fstab","r"); //open file for describing the mounted filesystems
  10. if(!f)
  11. printf("error:%s\n",strerror(errno));
  12. while ((m = getmntent(f)))        //read next line
  13. printf("Drive %s, name %s,type  %s,opt  %s\n", m->mnt_dir, m->mnt_fsname,m->mnt_type,m->mnt_opts );
  14. endmntent(f);   //close file for describing the mounted filesystems
  15. return 0;
  16. }

值得注意的是getmntent是不可重入函数,如果一个程序中多个地方同时调用getmntent,可能会得不到想要的结果,那么可以用getmntent_r函数来替代, 原型如下:

struct mntent *getmntent_r(FILE *fp, struct mntent *mntbuf, char *buf, int buflen);

getmntent_r会把数据存放在用户提供的内存中(mntbuf),而不是由系统管理。

addmntent(FILE *fp, const struct mntent *mnt) 可以在fp指向的文件追加最后一行数据。

最新文章

  1. mac上运行appium提示错误Encountered internal error running command 解决办法
  2. Redis学习笔记~是时候为Redis实现一个仓储了,RedisRepository来了
  3. HTML5播放器实例
  4. thinkphp 模板里a标签 href 带参数的 使用U函数方法
  5. 【HDU 1542】Atlantis 矩形面积并(线段树,扫描法)
  6. Ruby中文乱码问题
  7. 本地jar上传到本地仓库
  8. 项目部署到Tomcat报错
  9. 在VCS仿真器中使用FSDB[转载]
  10. Linux云计算工程师
  11. 这是一个新的开始at this very monment
  12. C++的初始化成员列表
  13. NFC应用于公交卡
  14. 使用ajax方法实现form表单的提交
  15. XGBoost介绍
  16. aspectj ----- 简介
  17. HDU_3193_Find the hotel
  18. 素数对猜想之python3实现
  19. “凯易迅Calix”实习上机——求元音开头辅音结尾的子串
  20. 《AngularJS学习整理》系列分享专栏

热门文章

  1. mysql主从复制 master和slave配置的参数大全
  2. 洛谷 P2053 [SCOI2007]修车 解题报告
  3. Codeforces 906B. Seating of Students(构造+DFS)
  4. 链接错误 multiply defined (by misc_1.o and misc.o).
  5. 转--snmp如何被tr069替代
  6. Qt ------ 控件布局 setSizePolicy
  7. SpringBoot (六) :如何优雅的使用 mybatis
  8. Install Terraform on Windows, Linux and Mac OS
  9. Java设计模式の模版方法模式
  10. git相关网址