在vxworks中是否有任何API可以返回在系统中创建的文件描述符总数?
答案 0 :(得分:0)
我认为没有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的最大文件描述符数...
答案 1 :(得分:0)
我希望这会有所帮助。
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