如何在windows中通过端口查找PID并使用java杀死已找到的任务
我需要通过进程端口在java代码中杀死进程。 我可以在cmd中手动执行此操作,如:
C:\>netstat -a -n -o | findstr :6543
TCP 0.0.0.0:6543 0.0.0.0:0 LISTENING 1145
TCP [::]:6543 [::]:0 LISTENING 1145
C:\>taskkill /F /PID 1145
在java中,我可以执行如下cmd命令:
ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", "netstat -a -n -o | findstr :6543");
但我不知道如何将PID作为netstat的输出并将其传输到“taskkill”命令。有人能推荐我吗
# 1 楼答案
您可以执行ProcessBuilder并从其输入流中获取响应
示例代码:
netstat的“-a”参数会导致Process Builder无限期地等待。你需要移除它。此外,如果需要获取错误流,则可以添加以下内容
一旦得到响应流,就可以解析数据并识别要杀死的PID。随后,您可以使用类似的逻辑,但可以更改命令,而不是netstat,您可以使用命令“kill-9$PID”来最终终止进程