进程已经退出,可是套接字仍然处于Listen状态
aiirr 2007-12-17 02:35:48 我使用ACE库做了一个AIO方面的程序,有的时候,当进程已经退出,用netstat看网络状态,发现端口仍然处于Listen状态。
例如:
netstat -anop TCP
获得一个列表,显示PID是1000(假设)的进程正在Listen某个端口(比如2000号端口)
而实际上,进程早已退出,用任务管理器看也看不到1000号进程。
奇怪的是用telnet xxx.xxx.xxx.xxx 2000
却可以连接到这个看不到的进程里。
结果导致我无法再次启动这个进程,因为端口已经处于Listen状态,我无法再次去绑定它
我已经设置了SO_REUSEADDR来防止套接字TIME_WAIT状态下的进程无法再次启动问题,可是套接字居然处于Listen状态,实在是奇怪。
注:
当进程退出的时候已经关闭了套接字,并且是正常关闭,关闭过程也没有出现问题