boost::system::error_code 产生错误 158 未知

Posted

技术标签:

【中文标题】boost::system::error_code 产生错误 158 未知【英文标题】:boost::system::error_code producing error 158 unknown 【发布时间】:2014-08-27 15:56:11 【问题描述】:

我正在使用boost::system::error_code 将错误代码捕获到日志文件中,并且它正在记录unknown error。我在网上没有找到任何关于这个错误的参考。

bool read_response_payload(size_t payload_len)

     boost::system::error_code ec;
     stream_connector<protocol_type, INTERFACE_BUFFER_LEN,
            INTERFACE_TIMEOUT_SECS>::read_all(payload_len, ec);
     if (ec) 
            LOGGER_LOG_WARN("Interface read error: %s", ec.message().c_str());
            stream_connector<protocol_type, INTERFACE_BUFFER_LEN,
                INTERFACE_TIMEOUT_SECS>::disconnect();
            return false;
     
     else 
            return true;
     

在日志文件中,我收到如下消息:

Interface read error: Unknown error 158

系统是:

root@OpenWrt:~# uname -a
Linux OpenWrt 2.6.30.9 #4 Thu Jul 3 16:08:13 BRT 2014 rlx GNU/Linux

【问题讨论】:

我猜这是 OpenWrt 特有的错误。尝试在 OpenWrt 文档或头文件中找到它。 【参考方案1】:

正如评论中所建议的,这是来自 OpenWRT 的 &lt;asm/errno.h&gt; 中描述的错误

#define ECONNREFUSED    146 /* Connection refused */
#define EHOSTDOWN   147 /* Host is down */
#define EHOSTUNREACH    148 /* No route to host */
#define EWOULDBLOCK EAGAIN  /* Operation would block */
#define EALREADY    149 /* Operation already in progress */
#define EINPROGRESS 150 /* Operation now in progress */
#define ESTALE      151 /* Stale NFS file handle */
#define ECANCELED   158 /* AIO operation canceled */

这是一个异步IO操作,已经被取消了。

【讨论】:

看来 openwrt 使用的 errno 编号与“普通”编号不同。为 Asio 提交补丁会很好......

以上是关于boost::system::error_code 产生错误 158 未知的主要内容,如果未能解决你的问题,请参考以下文章

Boost Asio error_code 的错误值的含义

Boost Asio总结同步通信