gpt4 book ai didi

c++ - VXWORKS 模拟器限制?

转载 作者:行者123 更新时间:2023-11-30 01:43:09 24 4
gpt4 key购买 nike

我目前正致力于在 VxWorks 下移植代码。所以我使用模拟器来验证更改。此代码需要打开许多管道和套接字。我在打开这些文件描述符时遇到问题。事实上,我可以打开 17 个文件描述符(套接字或管道会导致相同的错误)但以下返回错误“EMFILE:打开的文件太多”。在网上查了一下,我修改了全局变量NUM_FILES,但是这个修改没有效果。你知道这是否是限制同时打开的文件描述符数量的模拟器吗?

谢谢你的帮助

最佳答案

我也遇到过没有足够的可用文件描述符的问题。设置NUM_FILES到50左右就解决了问题。限制在静态分配文件描述符表的 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 返回的值将返回一个接近 NUM_FILES 的数字.

(另请注意,我还没有测试过上面的功能,因为现在我无法访问几年前使用过的源...您可能还想修改代码以使用套接字或管道相反,但关于自由文件描述符,它没有区别)

关于c++ - VXWORKS 模拟器限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38223573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com