0

我正在使用 Java 进程,如下所示:

Runtime rt = Runtime.getRuntime();
    try {
        Process pr = rt.exec(cmd);

        response = IOUtils.toString(pr.getInputStream(), "UTF-8");
        response = response.substring(2, response.length()-4);
        logger.debug("response :" + response);
    } catch (IOException e) {
        logger.error(e);
        e.printStackTrace();
    }

我可以在我的本地机器(Mac OSX)中看到记录器。但是当我在 Redhat Linux 机器上运行相同的程序时,我在查看日志时遇到了问题。我不知道pr.getInputStream()之后发生了什么。在该语句之前有一个记录器工作正常。我想看看exec(cmd)的响应。我怎样才能做到这一点。我怀疑当我尝试读取 InputStream 时出现问题。

4

1 回答 1

0

尝试在启动进程的线程之外的两个线程中读取输入流和错误流。如果没有人阅读他们正在写的内容,我已经看到进程会卡住写入错误或输出流。

于 2013-10-17T22:35:37.897 回答