嗯..几乎就是这样,我在检查我的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
答案 0 :(得分:1)
最可能的原因是m_socket
变量已损坏。使用strace
作为@Aidan建议查看传递给accept(2)
的值,或者将调试器附加到进程并在该内存位置设置观察点。