VXWORKS 模拟器限制?
VXWORKS simulator limits?
我目前正在 VxWorks 下移植代码。所以我使用模拟器来验证更改。
此代码需要打开许多管道和套接字。我在打开这些文件描述符时遇到问题。确实,我可以打开 17 个文件描述符(套接字或管道导致相同的错误)但是下面 return 错误 "EMFILE: too many opened files"。
在网上研究了一下,我修改了全局变量NUM_FILES,但是这个修改没有效果。
你知道这是否是限制同时打开的文件描述符数量的模拟器吗?
感谢您的帮助
我也遇到过可用文件描述符不足的问题。将 NUM_FILES
设置为 50 左右解决了问题。限制在静态分配文件描述符 table.
的 VxWorks 内核中
据我所知,更改 NUM_FILES
需要重新编译内核,因为它是内核配置值。
你可以在VxWorks上编译执行下面的函数来统计空闲文件描述符的数量shell:
int countFreeFds(void)
{
int count = 0;
int i;
FILE *fd[100];
for (count = 0; count < 100; count++)
{
fd[count] = fopen("somefile", "r"); /* some any existing file */
if (fd[count] == NULL)
{
break;
}
}
for (i = (count - 1); i >= 0; i--)
{
fclose(fd[i]);
}
return (count);
}
如果您在新启动的 VxWorks 上执行此操作,而没有进一步加载二进制文件或正在启动任务,则由 countFreeFds
编辑的值 return 将 return 接近 [=11 的数字=].
(另请注意,我还没有测试上面的功能,因为现在我无法访问我几年前使用过的源...您可能还想修改代码以使用套接字或管道,但关于自由文件描述符没有区别)
我找到问题了
我不得不修改 RTP_FD_NUM_MAX
这是一个特定的 RTP 值
我目前正在 VxWorks 下移植代码。所以我使用模拟器来验证更改。 此代码需要打开许多管道和套接字。我在打开这些文件描述符时遇到问题。确实,我可以打开 17 个文件描述符(套接字或管道导致相同的错误)但是下面 return 错误 "EMFILE: too many opened files"。 在网上研究了一下,我修改了全局变量NUM_FILES,但是这个修改没有效果。 你知道这是否是限制同时打开的文件描述符数量的模拟器吗?
感谢您的帮助
我也遇到过可用文件描述符不足的问题。将 NUM_FILES
设置为 50 左右解决了问题。限制在静态分配文件描述符 table.
据我所知,更改 NUM_FILES
需要重新编译内核,因为它是内核配置值。
你可以在VxWorks上编译执行下面的函数来统计空闲文件描述符的数量shell:
int countFreeFds(void)
{
int count = 0;
int i;
FILE *fd[100];
for (count = 0; count < 100; count++)
{
fd[count] = fopen("somefile", "r"); /* some any existing file */
if (fd[count] == NULL)
{
break;
}
}
for (i = (count - 1); i >= 0; i--)
{
fclose(fd[i]);
}
return (count);
}
如果您在新启动的 VxWorks 上执行此操作,而没有进一步加载二进制文件或正在启动任务,则由 countFreeFds
编辑的值 return 将 return 接近 [=11 的数字=].
(另请注意,我还没有测试上面的功能,因为现在我无法访问我几年前使用过的源...您可能还想修改代码以使用套接字或管道,但关于自由文件描述符没有区别)
我找到问题了
我不得不修改 RTP_FD_NUM_MAX 这是一个特定的 RTP 值