Arch manual pages

Package containing this man page: community/man-pages-ru (version 4.08_2329_2272_20170321-2)

GETMNTENT(3) Руководство программиста Linux GETMNTENT(3)

ИМЯ

getmntent, setmntent, addmntent, endmntent, hasmntopt, getmntent_r - возвращают запись из файла описания файловых систем

ОБЗОР

#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 */ #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

ОПИСАНИЕ

Эти функции используются для доступа к файлу описаний файловых систем /etc/fstab и к файлу описаний смонтированных файловых систем /etc/mtab.
Функция setmntent() открывает файл описаний файловых систем filename и возвращает указатель на файл, который может быть использован getmntent(). В аргументе type указывается требуемый тип доступа и и могут задаваться те же значения, что и в аргументе mode функции fopen(3).
Функция getmntent() считывает следующую строку из файла описаний файловых систем stream и возвращает указатель на структуру, содержащую поля строки файла. Указатель ссылается на статическую область памяти, которая перезаписывается последующими вызовами getmntent().
Функция addmntent() добавляет структуру mnt типа mntent к концу открытого stream.
Функция endmntent() закрывает stream, связанный с файл описаний файловых систем.
Функция hashmntopt() ищет в полях mnt_opts (смотрите ниже) структуры mnt типа mntent подстроку, совпадающую с opt. Список возможных параметров монтирования приведён в <mntent.h> и mount(8).
Реентерабельная функция getmntent_r() подобна getmntent(), но сохраняет struct mount в предоставляемом *mntbuf, а строки элементов этой структуры — в предоставляемый массив buf размера buflen.
Структура mntent определена в <mntent.h> следующим образом:
 

struct mntent {
    char *mnt_fsname;   /* название смонтированной файловой системы */
    char *mnt_dir;      /* префикс пути к файловой системе */
    char *mnt_type;     /* тип монтирования (смотрите mntent.h) */
    char *mnt_opts;     /* параметры монтирования (смотрите mntent.h) */
    int   mnt_freq;     /* периодичность запуска dump, в днях */
    int   mnt_passno;   /* номер прохода при параллельном fsck */
};

 
Так как поля в файлах mtab и fstab разделяются пробельными символами, то для их записи в одной из четырёх строках структуры mntent используются их экранированные последовательности в восьмеричном коде: пробел (\040), табуляция (\011), новая строка (\012), обратная косая черта (\134). Функции addmntent() и getmntent() выполнят преобразование экранированных строк и обратно.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Функции getmntent() и getmntent_r() возвращают указатель на структуру типа mntent или NULL при ошибке.
Функция addmntent() возвращает 0 при успешном выполнении и 1 при ошибке.
Функция endmntent() всегда возвращает 1.
Функция hasmntopt() возвращает адрес подстроки, если она была найдена, в противном случае NULL.

ФАЙЛЫ

/etc/fstab          файл описаний файловых систем
/etc/mtab           файл описаний смонтированных файловых систем

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).
Интерфейс Атрибут Значение
setmntent(), endmntent(), hasmntopt() Безвредность в нитях MT-Safe
getmntent() Безвредность в нитях MT-Unsafe race:mntentbuf locale
addmntent() Безвредность в нитях MT-Safe race:stream locale
getmntent_r() Безвредность в нитях MT-Safe locale

СООТВЕТСТВИЕ СТАНДАРТАМ

Нереентерабельные функции появились из SunOS 4.1.3. Функция getmntent_r() появилась из HP-UX 10, но она возвращает int. Показанный здесь прототип есть только в glibc.

ЗАМЕЧАНИЯ

В System V также имеется функция getmntent(), однако последовательность вызова и возвращаемая структура отличаются от остальных. В System V используется /etc/mnttab. В BSD 4.4 и Digital UNIX есть функция getmntinfo(), обёртка над системным вызовом getfsstat().

СМОТРИТЕ ТАКЖЕ

fopen(3), fstab(5), mount(8)
2016-03-15