如何杀死从我的Java应用程序启动的cmd进程?

时间:2019-04-18 08:20:11

标签: java process apache-kafka apache-zookeeper

我正在从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进程?

1 个答案:

答案 0 :(得分:1)

尝试

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();