调用accept()后出现“非法搜索”错误

时间:2010-05-19 14:19:51

标签: sockets errno

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

我知道套接字被视为unix中的文件,但我看不出它如何与套接字相关。我正在做的是:

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

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

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

由于 NelsonR.Pérez

1 个答案:

答案 0 :(得分:1)

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