有谁知道在哪种情况下,来自UDP套接字的recv返回-1但是errno是0?
答案 0 :(得分:1)
在errno
返回后调用将recvfrom
设置为零的其他函数的情况。这非常容易做到。为安全起见,请在errno
返回后立即将recvfrom
复制到其他变量 。
错:
i = recvfrom (...);
if (i < 0)
{
printf ("recvfrom error!\n");
printf ("errno=%d\n", errno);
}
如果第一个printf
修改errno
?
右:
i = recvfrom (...);
if (i < 0)
{
int j = errno;
printf ("recvfrom error!\n");
printf ("errno=%d\n", j);
}
ANSI规范说,&#34; [A]程序使用errno进行错误检查应该......在后续库函数调用之前检查它。&#34;
答案 1 :(得分:1)
从不。这不应该发生。