在Vxworks中是否有任何API可以返回创建的文件描述符总数?

时间:2014-12-21 05:18:47

标签: vxworks

在vxworks中是否有任何API可以返回在系统中创建的文件描述符总数?

2 个答案:

答案 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