java - 执行的程序挂起(可能是由于输出太多)

标签 java execute

我试图运行一个程序,忽略它的输出,但当它的输出很大时,它似乎会挂起。我的代码如下:

Process p = Runtime.getRuntime().exec("program");
p.getOutputStream().write(input.getBytes());
p.getOutputStream().flush();
p.getOutputStream().close();
p.waitFor();

忽略输出的最佳方法是什么?

我尝试将输出重定向到/dev/null,但收到 Java IOException 'Broke pipeline'。

最佳答案

你尝试过吗:

Process p = Runtime.getRuntime().exec("program >/dev/null 2>&1");

我记得以前必须在 Java 中执行类似的操作,但我可能没有以相同的方式调用该进程。

编辑:我刚刚测试了这段代码,它成功完成了。

class a
{
    public static void main(String[] args) throws Exception
    {
        Process p = Runtime.getRuntime().exec("cat a.java >/dev/null 2>&1");
        p.getOutputStream().write(123123);
        p.getOutputStream().flush();
        p.getOutputStream().close();
        p.waitFor();
    }
}

关于java - 执行的程序挂起(可能是由于输出太多),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6471787/

相关文章:

java - 隐式集合的 XStream 问题

Java - 两个线程进入相同的条件并通过

shell - 如何执行参数中带引号的命令?

delphi - 如何在 VB6/Delphi 程序中嵌入可执行文件

java - 来自 PMD 的 DD/DU 警告

java - 发送 key 后如何验证单元格文本的长度?

java - 用新的字符串值替换 ArrayList 值

shell - 如何在 zsh 中执行脚本然后变得可交互?

grails - Grails按钮无法执行我的操作?