奇怪的 socket() 错误 - 返回 -1,但 errno=ERROR_SUCCESS

发布于 2024-08-16 17:41:53 字数 375 浏览 9 评论 0原文

我正在 Linux 机器上使用 C/C++(混合)开发专用游戏服务器。我有以下代码片段:

int sockfd=socket(AI_INET, SOCK_DGRAM, 0);
if(sockfd==-1)
{
    int err=errno;
    fprintf(stderr,"%s",strerror(err));
    exit(1);
}

我的问题是套接字返回 -1 (意味着失败)并且正在打印错误字符串,但它是“成功”(ERROR_SUCCESS)。

其他说明:

  • 我正在请求端口 >1024 上的套接字(脱离上下文,但我想我会提到)
  • 我正在以超级用户身份执行应用程序

I'm developing a dedicated game server on a linux machine, in C/C++ (mixed). I have the following snippet of code:

int sockfd=socket(AI_INET, SOCK_DGRAM, 0);
if(sockfd==-1)
{
    int err=errno;
    fprintf(stderr,"%s",strerror(err));
    exit(1);
}

My problem here, is that socket is returning -1 (implying a failure) and the error string is being printed, but it is "Success" (ERROR_SUCCESS).

Other notes:

  • I am requesting a socket on a port >1024 (out of context, but thought I'd mention)
  • I'm executing the app as the super user

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

萤火眠眠 2024-08-23 17:41:53

我觉得自己非常愚蠢。仔细查看我的代码,在我的开发计算机上显示:

if(sockfd==-1);
...

I feel incredibly stupid. Carefully looking over my code, on my dev-computer shows:

if(sockfd==-1);
...
茶底世界 2024-08-23 17:41:53

你有多个线程在运行吗?它们可能会覆盖 errno 值。

在 socket() 和 if() 之间是否有您遗漏的代码行?另一个函数调用可能会覆盖 errno。

Do you have multiple threads running? They could be overwriting the errno value.

Are there any lines of code between socket() and if() that you left out? Another function call could overwrite the errno.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文