Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux机器上的Java进程输入流_Java_Linux_Inputstream - Fatal编程技术网

Linux机器上的Java进程输入流

Linux机器上的Java进程输入流,java,linux,inputstream,Java,Linux,Inputstream,我正在使用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(

我正在使用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();
    }

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

尝试在两个线程中读取输入流和错误流,而不是启动进程的线程。
我曾看到,如果没有人读取进程正在写入的内容,进程将无法写入错误或输出流。

我建议您阅读getErrorStream(),我打赌您的命令会报告错误。@PeterLawrey有没有办法检查我的exec命令是否返回错误/成功。这样我就可以相应地阅读我的回答了。@SatishJonnala在哪种意义上?如果
exec
本身失败,
Runtime
的文档似乎很有用,如果您运行的命令失败,
Process
的文档可能会有所帮助。@DennisMeng My exec命令成功。我可以看到它执行的结果。shell应该在执行之后给出一些响应。唯一的问题是,我的程序在尝试读取进程InputStream时停止。我怀疑exec是否在等待我提供更多输入,或者我是否需要关闭任何打开的流/通道。我对Java中的CLI完全陌生。