0

Linuxのプロセスリストからこのプロセスを強制終了して再度実行したいときに、Ubuntu 11でC++で開発されたシミュレータープログラムを起動しましたが、このエラーに直面しました:

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 を強制終了しようとしましたが、それでもエラーが発生します。どうすれば修正できますか?

4

2 に答える 2

2

あなたが抱えている問題は、ソケットが正しくシャットダウンされていない場合、ソケットがまだ予約されており、カーネルによってタイムアウトが閉じられるのを待っていることだと思います。

aを実行して、netstat -nutap次のような行があるかどうかを確認してください。

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

その場合は、競合せずに 6000 でソケットを開くことができるまで、カーネルがドロップするまで (約 30 秒) 待つ必要があります。

于 2012-04-23T23:50:04.843 に答える
0

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

于 2012-04-23T23:37:57.800 に答える