我试图运行一个程序,忽略它的输出,但当它的输出很大时,它似乎会挂起。我的代码如下:
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/