奇怪的 socket() 错误 - 返回 -1,但 errno=ERROR_SUCCESS
我正在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我觉得自己非常愚蠢。仔细查看我的代码,在我的开发计算机上显示:
I feel incredibly stupid. Carefully looking over my code, on my dev-computer shows:
你有多个线程在运行吗?它们可能会覆盖 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.