我遇到以下值的崩溃: -
轮询是正在使用的系统调用 给“errno”24(EMFILE) 和struct pollfd的值为“fd = 1022,events = 1,revents = 32”
这里我们正在讨论“fd = 1022”然后为什么它显示“errno”为24(EMFILE / 太多文件打开 /)
我有多个线程在无限循环中工作。
答案 0 :(得分:2)
在我的计算机上,ulimit -a
显示1024个最大打开文件。 1022非常接近这个限制。
您是否有尝试打开文件且失败的代码?可能是其他系统调用正在将errno设置为EMFILE。
确保您正在处理打开fds的代码的返回值。
确保您没有在某处泄露文件描述符。
如果此代码以适当的权限运行,您可以尝试使用ulimit -n
或setrlimit()
增加最大打开文件限制。