getmntent - getmntent_r
getmntent(3)
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(): _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().