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

时间:2014-07-21 10:18:13

标签: c linux sockets error-code errno

  1. 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 */
    

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

    当我做cat /proc/sys/fs/file-max时,我看到值为334076 ulimit -n显示1024

    知道可以采取哪些措施来增加限额?

2 个答案:

答案 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