1

好吧.. 差不多就是这样,在检查我的 errno 变量时,我似乎遇到了“非法搜索”错误。问题是我不知道这意味着什么。

我知道套接字在 unix 中被视为文件,但我看不出这与套接字有什么关系。我正在做的是:

int sck = ::accept(m_socket, (struct sockaddr*)&client_address, (socklen_t*)&address_len);

然后我得到sck = -1errno = ESPIPE

奇怪的是它是随机发生的。我的意思是,有时代码工作正常,有时它只是抛出一个异常。我正在使用线程,所以这是可以理解的。但我只是想知道什么样的行为使 accept() 调用将 errno 设置为 ESPIPE 以便我可以检查参数。

谢谢纳尔逊·R·佩雷斯

4

1 回答 1

1

最可能的原因是m_socket变量已损坏。按照@Aidan 的建议使用strace,以查看传递给的值accept(2),或将调试器附加到进程并在该内存位置设置观察点。

于 2010-05-19T18:05:38.860 回答