Linux errno 23和Linux errno 24之间的区别

  1. errno.h这两个linux错误有什么区别? 23和24

    我尝试了2个不同的网站,但不能理解两者之间的差异。


     [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 */ 

  2. 此外,我得到错误24和套接字调用974次失败。 ( AF_INET UDP数据报套接字)

    当我做了一个cat /proc/sys/fs/file-max我看到一个值334076 ulimit -n显示1024

    任何想法可以做什么来增加限制?

Solutions Collecting From Web of "Linux errno 23和Linux errno 24之间的区别"

对于1)这两个错误代码是关于打开的文件太多的情况。 EMFILE在您的过程中打开的文件太多。 ENFILE在整个系统中打开的文件太多。

您可以增加打开的文件/文件描述符的最大数量

 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