【问题标题】:Executing shell script from java code and check if execution has passed [duplicate]从java代码执行shell脚本并检查执行是否已通过[重复]
【发布时间】:2016-05-03 15:28:38
【问题描述】:

我正在使用以下命令从 java 执行 shell 脚本。我还需要检查脚本执行是否成功且没有任何错误。有没有可能的方法来做到这一点?请指教。

ProcessBuilder pb = new ProcessBuilder("test.sh", arg1, arg2);
Process p = pb.start();

【问题讨论】:

  • 谢谢 :) 不知何故,在输入问题时它没有出现在建议中。让我试试

标签: java shell unix


【解决方案1】:

您需要检查进程是否终止,您可以使用Process.waitFor() 来执行此操作,直到进程完成为止。这个调用的返回值就是你调用的系统命令的返回码。

【讨论】:

  • 谢谢。我可以使用 p.waitfor() 然后获取 p.exitvalue() 并检查它是否为零吗?
  • p.waitFor() 返回退出代码,您可以检查为零:p.waitFor() == 0 -> 成功
【解决方案2】:

要异步处理,请将线程侦听器附加到Process.getErrorStream(即侦听read() 方法)。当进程关闭时,你会得到一个 IOException,释放线程。然后拨打Process.exitValue()。如果您从错误流中得到任何东西或 Process.exitValue() 不是 == 0,则暗示可能失败

【讨论】:

  • 谢谢..会试试这个...
猜你喜欢
  • 2011-07-12
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 2018-02-19
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
  • 2019-12-29
相关资源
最近更新 更多