【问题标题】:Running bash from Java从 Java 运行 bash
【发布时间】:2012-01-07 21:25:14
【问题描述】:

我想按照这些思路做点什么。

    Process shell = Runtime.getRuntime().exec("/bin/bash");

然后我想使用 shell 进程的流与 bash shell 对话。然而,这似乎根本不起作用,它完全难倒我。

我发现这个link 似乎在谈论同样的问题。为什么会发生这种情况?是否有比链接中列出的更好的解决方案?

【问题讨论】:

  • 从 java 启动 bash 时到底需要什么?
  • @Siva 没有错误。例如,执行 shell.getOutputStream().write("touch blah".getBytes()) 不会在任何地方创建文件。
  • @omarello 我想公开一些用户与 shell 的交互

标签: java subprocess


【解决方案1】:

可能有必要将您的写入从 JVM 刷新到子进程,以确保其获得输入。 IIRC 我不需要在 Windows 上执行此操作,但在 Linux 上执行了此操作。我还遇到了必须强制子进程刷新写入以便 JVM 也能立即看到它们的问题。

另外,在你做任何事情之前,确保你有 JVM 线程从 stdout 和 stderr 读取,如果这些缓冲区中的任何一个被填满,它可以锁定进程。这是 Windows 上的一个大问题。如果您在启动进程时使用选项来合并流,您将只需要一个线程。

另外,您的示例(上图)没有换行符,bash 不需要换行符吗?例如“触摸等等\n”

【讨论】:

    猜你喜欢
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多