【发布时间】:2014-01-28 16:22:45
【问题描述】:
对于获取套接字系统调用(如recv)错误,哪个更好(在性能级别)?
- 使用普通的旧
errno - 或者使用
SO_ERROR作为getsockopt()optname?
我认为errno(在我的系统上定义为__error())更快,因为它不是系统调用。我说的对吗?
SO_ERROR 的优点是:获取后自动错误重置,并且我们确信错误只与我们的套接字有关。更安全。
你觉得哪个更好?两者的性能真的有区别吗?
【问题讨论】:
-
关于 SO_ERROR 的要点在于,即使在您调用了其他系统调用之后,它仍然安全地隐藏在套接字数据中……例如
select(),也可以设置errno。
标签: c sockets unix errno getsockopt