Есть ли в стандартных Linux-библиотеках функция (или интерфейс, ioctl, netlink и т. Д.), Которая вернет текущие монтировки непосредственно из ядра без разбора/proc? strace
Команда монтирования, похоже, что она анализирует файлы в/procФункция Linux для получения точек монтирования
ответ
Для отображения этой информации нет ни одной из этих систем; вместо этого вы можете найти его в файле /etc/mtab
mtab - это просто символическая ссылка на/proc/mounts на большинстве систем. – tMC
символическая ссылка или жесткая ссылка? Я помню, что в старые времена mtab не был надежным ... –
@tMC: '/ proc/mounts' является деталью реализации. '/ etc/mtab' - стандартный файл, который вы найдете почти в любой Unix-подобной системе. Я не проверял, но я думаю, что это часть стандарта. Поэтому вы можете положиться на это. И я бы не сказал «на большинстве систем». В моих системах Ubuntu и OpenSuSE это простой файл. У меня есть '/ proc/mounts', но это ссылка :-) –
Есть ли причина, по которой вы не использовали бы вызов библиотеки libc библиотеки getmntent
? Я понимаю, что это не то же самое, что системный вызов «все в одном», но он должен позволить вам получить соответствующую информацию.
#include <stdio.h>
#include <stdlib.h>
#include <mntent.h>
int main(void)
{
struct mntent *ent;
FILE *aFile;
aFile = setmntent("/proc/mounts", "r");
if (aFile == NULL) {
perror("setmntent");
exit(1);
}
while (NULL != (ent = getmntent(aFile))) {
printf("%s %s\n", ent->mnt_fsname, ent->mnt_dir);
}
endmntent(aFile);
}
У меня есть встроенная система, которая могла бы использовать эту информацию во время загрузки; до/proc. – tMC
И 'df', и' mount' используют '/ proc/self/mountinfo' вместо'/proc/mounts', но результат тот же. –
Имейте в виду, что 'getmntent' не является потокобезопасным. Существует 'getmntent_r' (расширение GNU). –
http://stackoverflow.com/questions/5095976/mount-system-call – Satish
@Satish что монтирует filesystem- он не возвращает _current mounts_ – tMC
Почему вы хотите, чтобы избежать '/ Proc /'? ? под Linux это предпочтительный способ получить такую информацию! И это очень просто! –