Есть ли в Vxworks какой-либо API, который возвращает общее количество созданных файловых дескрипторов?

В vxworks есть какой-либо API, который возвращает общее количество файловых дескрипторов, созданных в системе?


person user13    schedule 21.12.2014    source источник


Ответы (2)


Я надеюсь, что это будет полезно.

int number_of_opened_fd()
{
    int fd;
    int count = 0;

    for (fd=3; fd<iosFdMaxFiles(); fd++) {
        if (iosFdMap(fd) != NULL) {
            count++;
        }
    }

    return count;
}

Если вы хотите увеличить максимальный fd,

$ vxprj parameter set NUM_FILES 100
person JaeMann Yeh    schedule 29.10.2018

Я думаю, что нет вызова API, который делает это. Несколько лет назад у меня были проблемы с файловыми дескрипторами, но я их не нашел. Итак, я использовал что-то вроде следующего кода:

#include <stdio.h>
#include <config/all/configAll.h>   /* NUM_FILES */

int getUsedFds(void)
{
    FILE *fd[1024];     /* just some big number */
    int count;
    int free;
    int used;


    /* get all remaining file descriptors... */
    for (count = 0; count < 1024; count++)
    {
        fd[count] = fopen("/tffs0/some_existing_file", "r");
        if (fd[count] == NULL)
        {
            break;
        }
    }

    free = count;
    used = NUM_FILES - free;   /* NUM_FILES is a VxWorks configuration value */
                               /* Usually NUM_FILES is about 25-60 */   

    /* clean up the mess we've made! */
    for (count--; count >= 0; count--)
    {
        fclose(fd[count]);
    }

    return (used);
}

Если вы не хотите открывать существующие файлы, я думаю, вы также можете создавать сокеты. Насколько я помню, сокеты реализованы с использованием файловых дескрипторов.

Если у вас недостаточно доступных файловых дескрипторов, вы можете увеличить максимальное количество файловых дескрипторов вашего VxWorks...

person Lukas Thomsen    schedule 28.12.2014