我想做一些类似的事情。
Process shell = Runtime.getRuntime().exec("/bin/bash");
然后我想使用 shell 进程的流与 bash shell 进行通信。然而这似乎根本不起作用,它完全难住了我。
我找到了这个link这似乎在谈论同样的问题。为什么会发生这种情况?是否有比链接中概述的更好的解决方案?
最佳答案
可能有必要将写入从 JVM 刷新到子进程,以确保其获取输入。 IIRC 我不需要在 Windows 上执行此操作,但在 Linux 上执行此操作。我还遇到了一些问题,我必须强制子进程刷新写入,以便 JVM 也能立即看到它们。
此外,在执行任何操作之前,请确保 JVM 线程从 stdout 和 stderr 读取数据,如果这些缓冲区中的任何一个已满,则可能会锁定进程。这在 Windows 上是一个大问题。如果您在启动进程时使用组合流的选项,则只需要一个线程。
另外,你的例子(上面)没有换行符,bash 不需要换行符吗?例如“触摸等等\n”
关于java - 从 Java 运行 bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8295511/