首页 > 解决方案 > 寻求帮助以解决此 c 错误

问题描述

我运行一个在线游戏,它运行在一个用 c++ 和 c 构建的服务器上(据我所知)。最近,我在他们的 github 页面上打开了一张票,因为我收到这样的错误:** Waiting for network I/o, bad file descriptor。

他们的回应是公平的,这不是他们的错误,而是我的服务器受到的限制。他们建议查看 ulimit 和 sysctl。Sysctl 似乎相当先进,我仍在研究,在我去探索我不明白的事情之前,但是,ulimit 似乎表明没有文件 i/o 或文件描述符限制,并且我尝试的所有输出,都扫描用户,并且通常使用 ulimit 进行扫描只是表示无限制。

在这方面,有没有人知道我应该寻找解决此错误的特定位置,或特定调用,例如打开文件,我应该查看是否无法正确关闭,或诸如此类?github主题是:https ://github.com/lisdude/toaststunt/issues/15

我还附上了发生这种情况的服务器的代码片段:

int
mplex_wait(unsigned timeout)
{
    struct timeval tv;
    int n;

    tv.tv_sec = timeout / 1000000;
    tv.tv_usec = timeout % 1000000;

    n = select(max_descriptor + 1, &input, &output, 0, &tv);

    if (n < 0) {
    if (errno != EINTR)
        log_perror("Waiting for network I/O");
    return 1;
    } else
    return (n == 0);
}

我希望这有帮助。C 不是我的强项,所以如果需要更多信息,请告诉我。

标签: csocketsubuntunetworking

解决方案


推荐阅读