mntent

NAME
mntent -- static information on a file system


SYNOPSIS
#include ><mntent.h>


DESCRIPTION
The /etc/fstab file holds information about a file system
used by the local machine, and the /etc/mtab file holds
information on the file system mounted. These files consist
of lines having the following form.

file-system mount-point FS-type options freq passno

For example, a line may be specified as follows:

/dev/dsk/05 >/work >SFS >rw >0 >0

Fields are separated by blanks, A tab nonblank character #
specified at the beginning indicates that the subsequent
character string is treated as a comment.

Entries in /etc/fstab or /etc/mtab can be accessed by getmn-
tent(3X). A structure with the following form is returned.


struct >mntent{
char *mnt_>fsname; /* >filesystem >name >*/
char *mnt_>dir; /* >filesystem >path >prefix >*/
char *mnt_>type; /* SFS, NFS, >swap, >or >ignore
*/
char *mnt_>opts; /* rw, ro, hard, soft,
userquota, >groupquota, >noauto,
etc. >*/
int mnt_>freq; /* >dump >frequency, >in >days >*/
int mnt_>passno; /* pass number on parallel
fsck >*/
};

The mnt_type field determines the interpretations of the
mnt_fsname and mnt_opts fields. The following lists the
interpretations of these fields for each of the file system
types currently supported:

#include <stdio.h>
#include <mntent.h>

FILE *setmntent(const char *filename, const char *type);

struct mntent *getmntent(FILE *fp);

int addmntent(FILE *fp, const struct mntent *mnt);

int endmntent(FILE *fp);

char *hasmntopt(const struct mntent *mnt, const char *opt);

/* GNU extension */
#define _GNU_SOURCE /* or _SVID_SOURCE or _BSD_SOURCE */
#include <mntent.h>

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

DESCRIPTION 

These routines are used to access the file system description file /etc/fstab and the mounted file system description file /etc/mtab.

The setmntent() function opens the file system description file fp and returns a file pointer which can be used by getmntent(). The argument type is the type of access required and can take the same values as the mode argument of fopen(3).

The getmntent() function reads the next line from the file system description file fp and returns a pointer to a structure containing the broken out fields from a line in the file. The pointer points to a static area of memory which is overwritten by subsequent calls to getmntent().

The addmntent() function adds the mntent structure mnt to the end of the open file fp.

The endmntent() function closes the file system description file fp.

The hasmntopt() function scans the mnt_opts field (see below) of the mntent structure mnt for a substring that matches opt. See <mntent.h> and mount(8) for valid mount options.

The reentrant getmntent_r() function is similar to getmntent(), but stores the struct mount in the provided *mntbuf and stores the strings pointed to by the entries in that struct in the provided array buf of size buflen.

The mntent structure is defined in <mntent.h> as follows:

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 */
};

Since fields in the mtab and fstab files are separated by whitespace, octal escapes are used to represent the four characters space (/040), tab (/011), newline (/012) and backslash (/134) in those files when they occur in one of the four strings in a mntent structure. The routines addmntent() and getmntent() will convert from string representation to escaped representation and back.

RETURN VALUE 

The getmntent() and getmntent_r() functions return a pointer to the mntent structure or NULL on failure.

The addmntent() function returns 0 on success and 1 on failure.

The endmntent() function always returns 1.

The hasmntopt() function returns the address of the substring if a match is found and NULL otherwise.

FILES 

/etc/fstab file system description file /etc/mtab mounted file system description file

CONFORMING TO 

The non-reentrant functions are from SunOS 4.1.3. A routine getmntent_r() was introduced in HPUX 10, but it returns an int. The prototype shown above is glibc-only. LSB deprecates the functions endhostent(), sethostent() and setmntent().

NOTES 

System V also has a getmntent() function but the calling sequence differs, and the returned structure is different. Under System V /etc/mnttab is used. 4.4BSD and Digital Unix have a routine getmntinfo(), a wrapper around the system call getfsstat().

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
setmntent函数是一个C库函数,用于打开和操作mntent结构的文件。mntent结构是用于描述挂载点信息的结构体。setmntent函数的原型如下: ```c #include <mntent.h> FILE *setmntent(const char *filename, const char *type); ``` setmntent函数接受两个参数:filename和type。filename是一个字符串,表示要打开的文件的路径。type是一个字符串,表示要执行的操作类型。setmntent函数返回一个指向mntent结构的文件指针。 以下是一个使用setmntent函数的示例: ```python import ctypes # 定义mntent结构体 class mntent(ctypes.Structure): _fields_ = [ ("mnt_fsname", ctypes.c_char_p), ("mnt_dir", ctypes.c_char_p), ("mnt_type", ctypes.c_char_p), ("mnt_opts", ctypes.c_char_p), ("mnt_freq", ctypes.c_int), ("mnt_passno", ctypes.c_int) ] # 加载libc库 libc = ctypes.CDLL("libc.so.6") # 打开mntent结构的文件 mnt_file = libc.setmntent("/etc/mtab", "r") # 读取mntent结构的文件内容 mnt_entry = mntent() while libc.getmntent_r(mnt_file, ctypes.byref(mnt_entry), ctypes.byref(mnt_entry)) is not None: print("Filesystem: ", mnt_entry.mnt_fsname.decode()) print("Mount point: ", mnt_entry.mnt_dir.decode()) print("Type: ", mnt_entry.mnt_type.decode()) print("Options: ", mnt_entry.mnt_opts.decode()) print("Frequency: ", mnt_entry.mnt_freq) print("Pass number: ", mnt_entry.mnt_passno) # 关闭mntent结构的文件 libc.endmntent(mnt_file) ``` 这个示例演示了如何使用setmntent函数打开并读取mntent结构的文件。它打开了"/etc/mtab"文件,并逐行读取文件内容,然后打印出每个挂载点的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值