2012-04-23 31 views
0

我共進午餐時,我想殺死在Linux的進程列表這一進程,並希望再次運行它在我的Ubuntu 11 C++開發了一種模擬程序,我遇到這個錯誤:初始化套接字時出錯:端口= 6000。地址已在使用

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

我用lsof命令找到進程的PID:

[email protected]:~$ lsof -i:6000 
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 
rcssserve 8764 saman 3u IPv4 81762  0t0 UDP *:x11 

之後,我試圖殺死8764的PID。但仍然有錯誤。 我該如何解決它?

回答

2

我認爲你遇到的問題是,如果它沒有正確關閉套接字,那麼它仍然是保留,並等待超時被內核關閉。

嘗試做一個netstat -nutap,看看是否有這樣一行:

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

如果這是你不得不等待,直到內核刪除它(30秒左右),直到你可以打開插座的情況下6000無衝突

+0

udp 0 0 0.0.0.0:6000 0.0.0.0:35 3543/rcssserver,內核如何不刪除它。 – sparkmood 2012-04-23 23:57:33

+0

rcsserver是你正在運行的模擬器嗎?因爲進程擁有套接字,你應該殺死它。它不是一個錯誤地關閉的套接字 – 2012-04-24 00:03:19

+0

是的rcssserver是一個模擬器。你是對的。有用。 – sparkmood 2012-04-24 00:05:19

0

似乎6000端口被X窗口系統(Linux的GUI部分)使用,並且可能只是在殺死進程時重新啓動...或者您需要運行模擬而不運行X-windows ,或者你調整代碼使用不同的端口..

相關問題