我在我的Ubuntu 11上用C++开发了一个模拟器程序,当我想从Linux进程列表中杀死这个进程时,想再次运行它,我面对这个错误:

Error initializing sockets: port=6000. Address already in use

我使用lsof命令查找进程的PID:
saman@jack:~$ lsof -i:6000
COMMAND    PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rcssserve 8764 saman    3u  IPv4  81762      0t0  UDP *:x11

之后我试图杀死8764的PID。但还是有错误。
我怎样才能修好它?

最佳答案

我认为您遇到的问题是,如果套接字没有正确关闭,那么它仍然保留并等待内核关闭超时。
尝试执行netstat -nutap并查看是否有这样的行:

tcp        0      0 AAA.AAA.AAA.AAA:6000     XXX.XXX.XXX.XXX:YYYY       TIME_WAIT   -

如果是这样的话,你只需要等到内核掉下来(大约30秒),直到你可以在6000打开插座而不发生冲突

关于linux - 初始化套接字时出错:端口= 6000。地址已被使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10289739/

10-10 23:24