LINUX.ORG.RU

кол-во свободных дескрипторов


0

0

Как по-человечиски узнать остаточное кол-во свободных дескрипторов?

Следующий вариант работает, но кажется мне всё-таки не кошерным:

---8<---
#define MAXFD   1024

int
maxfd(void)
{
        int     i, ret;
        FILE    *fd[MAXFD];

        for (i = 0; (fd[i] = fopen("/dev/null", "r")) != NULL && i < MAXFD; i++)
                ;
        ret = i;
        while (i--)
                fclose(fd[i]);
        return ret;
}
---8<---

getrlimit возвращяет же сверического коня в вакууме, т.к. часть
дескрипторов уже занята (stdin/stdout/хзчто) и как определить
сколько ещё реально доступно не понятно.

Идеи?
★★★★★

Поискать псевдофайл в /proc ???

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

тенкс, этот вариант мне больше нравится

beastie ★★★★★
() автор топика

грубо говоря, так делать не надо - потому, что это ничего не дает (ну, разве что это отдельная программка 'fdfree'). Ибо никто не гарантирует, что эти открытые дескрипторы никто не съест после проверки, но до того, как они реально понадобятся.

Дескрипторы нужно отрывать по мере необходимости, и ругаться, если не хватает.

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