我正在开发一个侦听端口 3000 的应用程序。显然它的一个实例仍在侦听端口,因为每当我启动它时,它都无法创建侦听器(C#、TcpListener,但这无关紧要),因为端口已经采取。
现在,任务管理器中不存在该应用程序,所以我试图找到它的 PID 并杀死它,这导致了这个有趣的结果:
C:\Users\username>netstat -o -n -a | findstr 0.0:3000
TCP 0.0.0.0:3000 0.0.0.0:0 LISTENING 3116
C:\Users\username>taskkill /F /PID 3116
ERROR: The process "3116" not found.
Run Code Online (Sandbox Code Playgroud)
我以前从未见过这种行为,并认为看看是否有人有解决方案很有趣。
更新:我启动了 Process Explorer 并搜索了 3000 并找到了这个:
<Non-existent Process>(3000): 5552
Run Code Online (Sandbox Code Playgroud)
我右键单击它并选择“关闭句柄”。它不再在 Process Explorer 中,但仍显示在 netstat 中,并且仍会阻止应用程序启动侦听器。
更新 2:找到了 Windows 的 TCPView,它将进程显示为"<non-existent>". 与 CurrPorts 一样,当我尝试关闭此工具中的连接时没有任何反应。