В vxworks есть какой-либо API, который возвращает общее количество файловых дескрипторов, созданных в системе?
Есть ли в Vxworks какой-либо API, который возвращает общее количество созданных файловых дескрипторов?
Ответы (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