如何知道使用Runtime.exec()执行的命令是给出一些输出还是只是等待而不给出任何输出?

时间:2015-09-18 08:54:37

标签: java

我正在尝试使用Java Runtime exec运行accurev命令(如下面的代码所述)。由于我遇到网络问题,所以当执行login命令时,命令会一直等待响应并且不会超时。那么我应该如何处理这个错误。

private static void accurevLogin() throws IOException {
    Runtime runTime = Runtime.getRuntime();
    String userName = prop.getProperty("UserName");
    String password = prop.getProperty("Password");
    String command = (new StringBuilder("accurev login ")).append(userName).append(" ").append(password).toString();
    Process ps = null;
    try {
        ps = runTime.exec(command);
    } catch (IOException e) {
        System.out.println("Command Execution Error!");
    }
    /* Error handling Code */
    System.out.println("ACCUREV LOGGED IN");
}

当我使用

BufferedReader input = new BufferedReader(new InputStreamReader(ps.getInputStream()));

循环中的input.readline将继续运行,我无法检查输出。

1 个答案:

答案 0 :(得分:1)

最好的方法是使用<script> $('#myModal').on('show', function () { $('div.modal-body iframe#youtube').attr('src', 'https://www.youtube.com/embed/PUcTN5ou2o0?autoplay=1&rel=0&showinfo=0'); }); $('#myModal').on('hide', function () { $('div.modal-body iframe#youtube').attr('src', ''); }); </script> 命令的超时选项(如果可用)。

如果没有这样的选项,你应该在一个单独的Java线程中执行它,并在你选择一些超时后以编程方式中止。

以下是一个简单accurev命令的示例:

sleep