【发布时间】:2010-03-26 15:36:01
【问题描述】:
我在 VxWorks PPC 上运行我的代码,如果系统调用失败,尤其是对于套接字发送/接收函数,errno 总是返回 0。
经过一些分析我发现,如果所有系统调用失败,errno 返回 0。
为了让 errno 返回正确的值,我应该做任何初始化吗?
【问题讨论】:
-
您是否包括了“
<errno.h>”而不是“extern int errno;”?您是否从系统调用中得到错误指示?errno变量不会被库归零,但仅在系统调用返回错误指示时才相关。 -
是的。我包括
但不包括'extern int errno'。有关系吗?我的代码编译和链接很好。我的系统调用肯定会返回错误指示。 -
errno 并不是真正的“extern int errno;”。这不允许多个线程,因为它们必须共享一个 errno,并且您永远不会知道该值真正属于哪个线程。这是一个扩展为一些代码以访问线程本地版本的宏,所以它应该很重要。