java - 如何杀死从我的 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 进程?
解决方案
尝试
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();
推荐阅读
- go - golang 中睡眠导致时间间隔相差十倍
- sql - 逐行迭代Oracle SQL查询结果,产生子查询
- java - KafkaStream - 转换时出现 NullpointerException
- c# - 新手问题:如何绑定到Margin属性的一部分
- javascript - 如何防止“我自己的”javascript代码打开一个新窗口?
- flutter - isLocationOnPath() 在计算标记是否接触折线时给出不准确的结果
- iis-7 - IIS 重写域加倍
- javascript - 不使用工作区的纱线 nohoist
- python-3.x - 在第一次验证错误时停止执行并在 Pydantic 中返回?
- java - cordova build android in windows 10 显示以下问题