首页 > 解决方案 > 如何杀死从我的 java 应用程序启动的 cmd 进程?

问题描述

我正在从 java 应用程序启动一个 zookeeper 和一个 Kafka 服务器。

如果我尝试使用该destroyForcibly()方法终止这些进程,则不会发生任何事情。- 我尝试过使用destroy()destroyForcibly()方法,但似乎都没有。

Process p1 = Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c", "start",
    "C:/kafka_2.11-2.1.0/kafka_2.11-2.1.0/bin/windows/zookeeper-server-start.bat",
    "C:/kafka_2.11-2.1.0/kafka_2.11-2.1.0/config/zookeeper.properties"});


Thread.sleep(3000);

Process p2 = Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c", "start",
    "C:/kafka_2.11-2.1.0/kafka_2.11-2.1.0/bin/windows/kafka-server-start.bat",
    "C:/kafka_2.11-2.1.0/kafka_2.11-2.1.0/config/server.properties"});


Thread.sleep(5000);

p1.destroyForcibly();
p2.destroyForcibly();

是否可以以编程方式关闭 cmd 进程?

标签: javaprocessapache-kafkaapache-zookeeper

解决方案


尝试

Process p1 = new ProcessBuilder("C:/kafka_2.11-2.1.0/kafka_2.11-2.1.0/bin/windows/zookeeper-server-start.bat",
"C:/kafka_2.11-2.1.0/kafka_2.11-2.1.0/config/zookeeper.properties")
            .redirectOutput(ProcessBuilder.Redirect.DISCARD)
            .redirectError(ProcessBuilder.Redirect.DISCARD)
            .start();

推荐阅读