从Java运行bash
问题描述:
我想根据这些方面做些事情。从Java运行bash
Process shell = Runtime.getRuntime().exec("/bin/bash");
然后,我想使用shell进程的流来与bash shell进行通信。然而,这似乎并不奏效,它完全让我感到困惑。
我发现这link似乎谈论同样的问题。为什么会发生这种情况,是否有比链接中列出的解决方案更好的解决方案?
答
可能需要将写入从JVM刷新到子进程以确保其获取输入。 IIRC我不需要在Windows上这样做,但是在Linux上。我还遇到了一些问题,我必须强制子进程刷新写入,以便JVM也能马上看到它们。
此外,请确保您有任何JVM线程读取标准输出和标准错误之前,如果任何缓冲区填满它可以锁定进程。这是Windows上的一个巨大问题。如果您在启动流程时使用这些选项来合并流,则只需要一个线程。
另外,你的例子(上面),没有换行符,不会bash需要吗?例如“touch blah \ n”
从java启动bash时,你需要什么? – omarello
你有什么错误吗? –
@Siva没有错误。执行shell.getOutputStream()。write(“touch blah”.getBytes())不会在任何地方创建文件。 – jetru