2010-08-04 98 views
1

任何人都可以帮助解释当bind()的socket函数失败什么ENOENT的错误值意味着什么?手册页说这意味着“该文件不存在”。什么文件?我试着用一个坏的文件描述符调用bind(),并按照预期将errno设置为EBADF,所以不是这样。与errno == ENOENT绑定()错误?

+0

看到http://linux.die.net/man/2/bind正确的形式,把它比作你的,后你有什么,如果你不能弄清楚为什么你不工作 – KevinDTimm 2010-08-04 18:16:00

回答

0

这几乎可以肯定是在你的代码中的错误。如果我不得不猜测,我该怎么做,我会说你在传递的地址中绑定了一个错误的UNIX套接字路径。

也有可能出错的代码不是从绑定来 - 检查你的线程安全。

+0

不幸的是,我不能发布实际的代码。它分布在一个面向对象的大型系统中的4个课程中。我试着传递一个明确的错误地址来绑定并获得EFAULT。传递一个错误的大小(第三个参数)给EINVAL。我还找到了内核源代码,并且无法找到任何bind()代码可能返回ENOENT的地方。 – 2010-08-05 12:40:06

+0

啊,明白了 - 回答编辑。这其实是个问题:-)。抱歉,花了这么长时间才弄明白。 – Borealid 2010-08-05 14:57:01

+0

发现问题,但仍不明白ENOENT来自哪里。说来话长,但我们使用了错误的IP地址进入该bind()的调用,它应该设置errno EADDRNOTAVAIL。所以ENOENT就把我送走了。谢谢你一直在鼓励我的想法。 :) – 2010-08-05 16:11:44