侧边栏壁纸
博主头像
noerror

虚灵不寐,众理具而万事出。

  • 累计撰写 238 篇文章
  • 累计创建 9 个标签
  • 累计收到 2 条评论
标签搜索

目 录CONTENT

文章目录

getmntent函数用法详解

noerror
2022-11-09 / 0 评论 / 0 点赞 / 28 阅读 / 806 字 / 正在检测是否收录...

getmntent函数用法详解

getmntent函数简介

  • 头文件包含
#include <stdio.h>
#include <mntent.h>
#include <mntent.h>
  • 函数定义
FILE *setmntent(const char * filename , const char * type );
struct mntent *getmntent(FILE * stream );
int addmntent(FILE * stream , const struct mntent * mnt );
int endmntent(FILE * streamp );
char *hasmntopt(const struct mntent * mnt , const char * opt );
struct mntent *getmntent_r(FILE * streamp , struct mntent * mntbuf ,
                           char * buf , int  buflen );

getmntent函数常见使用错误

  • 编译错误
    warning: implicit declaration of function ‘getmntent’ [-Wimplicit-function-declaration]
    解决办法:包含头文件
#include <stdio.h>
#include <mntent.h>
#include <mntent.h>

getmntent函数详细描述

这些例程用于访问文件系统描述文件/etc/fstab和挂载的文件系统描述文件/etc/mtab
setmntent ()函数打开文件系统描述文件filename并返回一个可供getmntent ()使用的文件指针。参数type是所需的访问类型,可以采用与fopen (3)的mode参数相同的值。应使用endmntent ()而不是fclose (3)关闭返回的流
getmntent ()函数从stream读取文件系统描述文件的下一行,并从文件的一行返回一个指向包含分线字段的结构的指针。指针指向内存的一个静态区域,随后调用getmntent ()会覆盖该静态区域
addmntent ()函数将mntent结构mnt添加到打开的stream 的末尾
endmntent ()函数关闭与文件系统描述文件相关联的stream。
hasmntopt ()函数扫描mntent结构mnt的mnt_opts字段(见下文),寻找与opt 匹配的子字符串。有关有效的挂载选项,请参见和mount (8)。
可重入的getmntent_r ()函数类似于getmntent (),但将"struct mount"存储在提供的*mntbuf中,并将该结构中的条目所指向的字符串存储在提供的大小为buflen 的数组buf中
中的mntent结构定义如下:

struct mntent {
   char *mnt_fsname;   /* name of mounted filesystem */
   char *mnt_dir;      /* filesystem 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 */
};

由于mtab和fstab文件中的字段由空格分隔,因此当这些文件中的空格(\e040)、制表符(\e011)、换行符(\e012)和反斜杠(\e\e)出现在mntent结构中的四个字符串之一时,八进制转义被用来表示这些字符。例程addmntent ()和getmntent ()将从字符串表示转换为转义表示,然后再转换回来。当从转义表示转换时,序列\e134也被转换为反斜杠。

getmntent函数返回值

getmntent ()和getmntent_r ()函数在失败时返回指向mntent结构的指针或NULL。
addmntent ()函数成功时返回0,失败时返回1。
endmntent ()函数总是返回1。
如果找到匹配项,hasmntopt ()函数返回子字符串的地址,否则返回NULL。

getmntent函数其他说明

System V也有一个getmntent ()函数,但是调用顺序不同,返回的结构也不同。在系统V下,使用/etc/mnttab。4.4 BSD和Digital UNIX有一个例程getmntinfo (),它是系统调用getfsstat ()的包装器

0

评论区