LINUX.ORG.RU

Ответ на: комментарий от x86

требуется, чтобы реализация сей задачи работала и на freebsd, а sysfs используето тот же /proc...

в принципе можно обойтить

#ifdef __FreeBSD__ //code #else //code #endif

но очень хочется избежать такого решения.

anonymous
()

>кл-во открытых на данный момент файлоdв в системе

как вариант - пробежаться по процесам в дереве /proc и посчитать для каждого кол-во файлов в каталоге fd

есть 3 НО: во-первых потоки тоже будут считаться, во-вторых открывая файл (например разными процессами) к нему (одному) будут ссылаться несколько дескрипторов. и последнее для того посмотреть кол-во дескрипторов для (к примеру) init'а нужен uid=0, ну или euid=0

ale ★★
()
Ответ на: комментарий от anonymous

Наверное sysctl(2) надо использовать.
Он есть и в Linux и в FBSD.

В Linux - вектор {CTL_FS,FS_NRFILE}
В FBSD - вектор {CTL_KERN,KERN_FILE}

hyde
()
Ответ на: комментарий от hyde

спасибо за наводку - я сразу же отбросил _sysctl, как только обнаружил, что в линуксовой реализации нет константы KERN_MAXFILES, а она оказывается заменена FS_NRFILE =)

но вторая часть вопроса всё же остаётся открытой, т.е.: как узнать кл-во дескрипторов, открытых в сис-ме на данный момент.

anonymous
()
Ответ на: комментарий от anonymous

Вот строка из /usr/include/linux/sysctl.h
FS_NRFILE=6,
/* int:current number of allocated filedescriptors */

hyde
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.