gpt4 book ai didi

Java执行命令但不返回值

转载 作者:太空宇宙 更新时间:2023-11-04 09:04:09 27 4
gpt4 key购买 nike

PHP 调用 shell 脚本,shell 脚本调用另一台服务器上的 cronjob。

我目前正在将相同的业务逻辑转换为 Java。

但是,当我们使用 Java 的“运行时”进行开发时,该服务器的 cronjob 报告(已失效)

WaitFor() 网页屏幕也在持续等待该方法

我应该做什么?

screenshot

public Map execCommand(String... str) {
Map<Integer, String> map = new HashMap<>();
ProcessBuilder pb = new ProcessBuilder(str);
pb.redirectErrorStream(true);
Process process = null;
try {
process = pb.start();
} catch (IOException e) {
e.printStackTrace();
}

BufferedReader reader = null;
if (process != null) {
reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
}

String line;
StringBuilder stringBuilder = new StringBuilder();
try {
if (reader != null) {
while ((line = reader.readLine()) != null) {
stringBuilder.append(line).append("\n");
}
}
} catch (IOException e) {
e.printStackTrace();
}

try {
if (process != null) {
process.waitFor();
}
} catch (InterruptedException e) {
e.printStackTrace();
}

if (process != null) {
map.put(0, String.valueOf(process.exitValue()));
}

try {
map.put(1, stringBuilder.toString());
} catch (StringIndexOutOfBoundsException e) {
if (stringBuilder.toString().length() == 0) {
return map;
}
}
return map;
}

最佳答案

waitFor()之后从输入流读取。

关于Java执行命令但不返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60434431/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com