2012-04-23 14 views
0

に私は、私は、Linuxのプロセスの一覧から、このプロセスを強制終了したいときに私のUbuntu 11でC++で開発されたシミュレータプログラムを昼食と再びそれを実行したい、私はこのエラーに直面した:ソケットを初期化する際のエラー:port = 6000。アドレスはすでに使用

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

私はプロセスのPIDを見つけるためにlsofコマンドを使用しました:

[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をやってみて、このような行があるかどう参照してください。それはあなただけのカーネル(約30秒)、それをドロップするまで、あなたがでソケットを開くことができるまで待つ必要がケースだ場合

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

は、 6000が矛盾することなく

+0

udp 0 0 0.0.0.0:6000 0.0.0.0:* 3543/rcssserver、どのようにカーネルがそれを落としたのか。 – sparkmood

+0

rcsserverは実行しているシミュレータですか?そのプロセスがソケットを持っているので、あなたはそれを殺すべきです。それは間違って閉じたソケットではありません –

+0

はいrcssserverはシミュレータです。はい、あなたは正しいです。できます。 – sparkmood

0

Xウィンドウシステム(LinuxのGUI部分)でポート6000が使用されているようで、おそらくプロセスを強制終了したばかりです... Xウィンドウを実行しないでシミュレーションを実行する必要があります、または別のポートを使用するコードを微調整してください。

関連する問題