关于 NodeJS 在 Windows 上杀死启动的进程问题
发布于 1 年前 作者 JZLeung 3100 次浏览 来自 问答

环境:Electron + NodeJS(windows10 ,不考虑 Linux)。

程序是这样的:

  1. node 使用 spawn,传入 execFile (有可能只是个 xxx.bat 脚本)和 args ,启动了一个 java 进程(监听端口 8080 )。
  2. 返回的 child_process 有一个 PID (如 11111 ),但它是属于启动的 cmd 的 PID ,实际 java 进程的 PID 是 22222 。
  3. 程序运行期间,会不断访问 java 程序的心跳接口。
  4. 退出前,使用 taskkill /T /F /PID 11111,能把这两个进程直接杀掉,但是!该 8080 端口还有很多状态为 TIME_WAIT 的连接没被一同 kill 掉,导致端口一直是被占用的状态。 当然,如果我直接用任务管理器将 java 进程强制终止,那也一样会有 TIME_WAIT 的连接,需要等待一段时间,才能解除端口占用。

求教各位大佬,怎么才能一劳永逸的直接杀死进程。

PS: 并不知道这个进程的名称(就没办法用 taskkill /F /IM ${name} 来杀进程)是啥。

2 回复

我是按端口找到进程ID,再杀死进程,但杀死后出现的问题也跟你描述中的一样

我是在NW.JS环境中操作的,端口占用一直无法解除,因为我在多个webview里进行作业操作,除非把所有webview都关掉,端口占用才可能解除,只有一个webview存在,端口占用就无法解除

回到顶部