java - 从 Java 运行 bash

标签 java subprocess

我想做一些类似的事情。

    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/

相关文章:

python - 管道时在 python 的子进程模块中使用 stdout.close()

python - 在前台生成一个子进程,即使在 python 退出之后

python - 在 Windows 中从 python 子进程运行 rsync

java - java中有没有返回系统主题颜色的方法?

python - 合并 Python 脚本的子进程的 stdout 和 stderr,同时保持它们可区分

java - 如何在jsp页面中获取eclipse项目的路径

java - 后端Play框架,前端呢?

python - 在 django View 中使用 subprocess.Popen() 执行 python 脚本

java - Apache POI在Linux环境下读取xlsx文件时抛出异常

java - 为什么我得到 : java. lang.UnsatisfiedLinkError