errno.h
中这两个linux错误有什么区别? 23和24
我尝试了两个不同的网站,但无法理解两者之间的区别。
[EMFILE]
Too many open files.
[ENFILE]
Too many files open in system.
# define ENFILE 23 /* File table overflow */
# define EMFILE 24 /* Too many open files */
此外,我在第974次收到错误24和套接字调用失败。 (AF_INET
UDP数据报套接字)
当我做cat /proc/sys/fs/file-max
时,我看到值为334076
ulimit -n显示1024
知道可以采取哪些措施来增加限额?
答案 0 :(得分:11)
For 1)两个错误代码都与打开的文件太多有关。 EMFILE在您的进程中打开的文件太多。 ENFILE在整个系统中打开了太多文件。
答案 1 :(得分:3)
您可以增加打开文件/文件描述符的最大数量
sysctl -w fs.file-max=100000
或者打开
/etc/sysctl.conf
并将fs.file-max附加/更改为您需要的数字:
fs.file-max = 100000
然后运行
sysctl -p
重新加载新设置
如果您不想设置系统范围的FD(文件描述符)限制,可以设置用户级FD限制。
你需要编辑
/etc/security/limits.conf file
对于用户YOUR_USER,请添加以下行:
YOUR_USER soft nofile 4096
YOUR_USER hard nofile 10240
为用户YOUR_USER设置软限制和硬限制。
保存并关闭文件。
要查看用户YOUR_USER的硬限制和软限制:
su - YOUR_USER
ulimit -Hn
ulimit -Sn