gpt4 book ai didi

c++ - setrlimit 不适用于 OS X Maverick 和 Yosemite

转载 作者:太空宇宙 更新时间:2023-11-04 13:31:50 24 4
gpt4 key购买 nike

我在为各种程序编写音频插件的公司工作,目前我在 Os X Mavericks 和 Yosemite 上遇到以下逻辑问题。Logic 会扫描我们所有的插件,并且在某些时候它无法再访问这些文件。 errno 是 24,意思是“打开的文件太多”

我们的代码中有以下行,它们增加了可用的文件描述符:

struct rlimit limit;
if (::getrlimit(RLIMIT_NOFILE, &limit) == 0)
{
limit.rlim_cur = (in_maxOpenFiles);
setrlimit(RLIMIT_NOFILE, &SetLimit);
}

我也试过:

struct rlimit limit;
if (::getrlimit(RLIMIT_NOFILE, &limit) == 0)
{
limit.rlim_cur = (in_maxOpenFiles);
limit.rlim_max = (in_maxOpenFiles);
setrlimit(RLIMIT_NOFILE, &SetLimit);
}

然而这并没有帮助。有趣的是,如果我打开终端并运行以下命令:

ulimit -n 1024

然后我从终端内运行逻辑,一切正常,没有描述符问题!!

现在,我认为 setrlimit 应该和 setrlimit 做同样的事情,不是吗?我做错了什么?

附言我也试过这个解决方案: https://unix.stackexchange.com/questions/108174/how-to-persist-ulimit-settings-in-osx-mavericks

它没有帮助。

最佳答案

我最终在这篇文章中找到了解决我的问题的方法: http://docs.basho.com/riak/latest/ops/tuning/open-files-limit/#Mac-OS-X

这也是解决方案(对于 Maverick,而不是 Yosemite): https://unix.stackexchange.com/questions/108174/how-to-persist-ulimit-settings-in-osx-mavericks

但是,目前还不清楚为什么 setrlimit 会失败。可能是 OS X 错误(或功能)。

关于c++ - setrlimit 不适用于 OS X Maverick 和 Yosemite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31115764/

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