我的一位同事最近遇到了一个问题,即一个据称死亡的进程仍然绑定到网络端口,阻止其他进程绑定到该端口.具体来说,netstat -a -b报告称一个名为System with PID 4476的进程打开了端口60001,除了没有PID 4476的进程,至少据我所知.
Process Explorer和任务管理器没有列出PID 4476(尽管有另一个名为System with PID 4的进程,它有自己的TCP连接集,不包括60001). taskkill / PID 4476还报告无法找到PID 4476.
有没有办法杀死这个神秘的系统进程来释放它当前绑定的端口?是什么导致这种情况发生?怎么会有任务管理器,进程资源管理器和taskkill都不知道的进程?重新启动设法解决问题,但我想知道是否有办法解决这个问题而无需重新启动.
我知道这是一个老线程,但如果其他人有同样的问题,我有……
可能发生的情况是,您的进程在崩溃或以其他方式退出时没有明确关闭它时打开TCP端口.通常情况下,操作系统会清理这些类型的东西,但只有当过程记录消失时才会清除.虽然该过程可能似乎不再运行,但至少有一件事可以记录它,以防止重用其PID.这是一个子进程的存在,它不与父进程分离.
如果您的程序在运行时生成了任何进程,请尝试删除它们.这应该导致其进程记录被释放并且TCP端口被清除.显然,Windows会在发布记录时执行此操作,而不是按照我的预期退出进程.