在 C++ Linux 应用程序中,我调用 socket()、bind() 和 listen() 来创建服务器套接字。通常如果应用程序启动两次(使用相同的服务器端口),在第二个进程中 bind() 将失败并出现 EADDRINUSE 错误。但是,现在我遇到了一个 bind() 显然成功但随后的 listen() 调用引发了 EADDRINUSE 错误的情况......
这可能是一种罕见的竞争条件,但我仍然对第二个 bind() 成功但第二个 listen() 没有成功的情况感兴趣。有没有人更了解这种情况?
这是在 32 位 RHEL 5.3 上。