小编Sre*_*kel的帖子

如何杀死一个已死但正在监听的进程?

我正在开发一个侦听端口 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 一样,当我尝试关闭此工具中的连接时没有任何反应。

windows tcp kill process netstat

53
推荐指数
7
解决办法
12万
查看次数

标签 统计

kill ×1

netstat ×1

process ×1

tcp ×1

windows ×1