属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
setmntent(),endmntent(),hasmntopt()Thread safetyMT-Safe
getmntent()Thread safetyMT-Unsafe race:mntentbuf locale
addmntent()Thread safetyMT-Safe race:stream locale
getmntent_r()Thread safetyMT-Safe locale

说明

这些例程用于访问文件系统描述文件/ etc / fstab和已挂载的文件系统描述文件/ etc / mtab。

setmntent()函数打开文件系统描述文件filename并返回一个可由getmntent()使用的文件指针。参数类型是所需的访问类型,可以采用与fopen(3)的mode参数相同的值。返回的流应使用endmntent()而不是fclose(3)关闭。

getmntent()函数从流中读取文件系统描述文件的下一行,并返回一个指向结构的指针,该结构包含文件中一行中的细分字段。指针指向内存的静态区域,该静态区域随后被对getmntent()的调用所覆盖。

addmntent()函数将mntent结构mnt添加到开放流的末尾。

endmntent()函数关闭与文件系统描述文件关联的流。

hasmntopt()函数扫描mntent结构mnt的mnt_opts字段(请参见下文)以查找与opt匹配的子字符串。有关有效的安装选项,请参见and mount(8)。

可重入的getmntent_r()函数类似于getmntent(),但将结构装载存储在提供的* 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文件中的字段由空格分隔,因此八进制转义符用于表示这些文件中的字符空间(\ 040),制表符(\ 011),换行符(\ 012)和反斜杠()出现在一个mnmn结构中的四个字符串之一中。例程addmntent()和getmntent()将从字符串表示形式转换为转义的表示形式,然后返回。从转义的表示形式转换时,序列\ 134也将转换为反斜杠。

另外参见

fopen(3),fstab(5),mount(8)

文件

/etc/fstab
文件系统描述文件
/etc/mtab
挂载的文件系统描述文件

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/

名称

getmntent,setmntent,addmntent,endmntent,hasmntopt,getmntent_r-获取文件系统描述符文件条目

GETMNTENT - Linux手册页

Linux程序员手册 第3部分
更新日期: 2019-03-06

语法

#include <stdio.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);

/* GNU extension */
#include <mntent.h>

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

glibc的功能测试宏要求(请参阅feature_test_macros(7)):

getmntent_r():
从glibc 2.19开始:
_DEFAULT_SOURCE
Glibc 2.19及更早版本:
_BSD_SOURCE _SVID_SOURCE

备注

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

返回值

getmntent()和getmntent_r()函数返回指向mntent结构的指针,如果失败则返回NULL。

addmntent()函数成功返回0,失败返回1。

endmntent()函数始终返回1。

如果找到匹配项,则hasmntopt()函数返回子字符串的地址,否则返回NULL。

遵循规范

不可重入功能来自SunOS 4.1.3。 HP-UX 10中引入了例程getmntent_r(),但它返回一个int。上面显示的原型仅适用于glibc。

日期:2019-08-20 18:01:16 来源:oir作者:oir