0

我遇到了以下值的崩溃:-

Poll 是正在使用的系统调用,将“errno”作为 24 (EMFILE) 并且 struct pollfd 的值“fd = 1022, events = 1, revents = 32”

在这里,我们正在使用“fd = 1022”然后为什么将“errno”显示为 24(EMFILE /打开的文件过多/)

我有多个线程在无限循环中工作。

4

1 回答 1

2

在我的机器上,ulimit -a显示最大打开文件数为 1024。1022 确实接近这个限制。

您是否有尝试打开文件但失败的代码?可能是其他一些系统调用将 errno 设置为 EMFILE。

确保您正在处理打开 fds 的代码的返回值。

确保您没有在某处泄漏文件描述符。

如果此代码以适当的权限运行,您可以尝试使用ulimit -n或增加最大打开文件限制setrlimit()

于 2010-07-22T22:17:53.773 回答