java - 打开两个终端进行读写

标签 java terminal

如果我在操作系统 native 终端(cmd.exe 或 xterm)中启动 java 程序,是否可以:

  1. 保留当前读写终端为 System.inSystem.out
  2. 打开另一个终端进行读/写 NewTerm.inNewTerm.out

就目前情况而言,我似乎所能做的就是打开第二个终端。我无法写入它(我尝试过 BufferedWriter ),它显示命令的唯一方法是这些命令是否在其打开时发出(即 Runtime.getRuntime("xterm ls")ProcessBuilder(command).start() ;其中 commandString[] ) )。

我想保持两个终端打开,以便我可以比较它们的输出。顺序如下:

  • 在第一个终端中运行程序
  • 生成第二个终端
  • 在第一个终端中发出命令
  • 在第二个终端中发出命令
  • 读取第一个终端输出
  • 读取第二个终端输出

这可能吗?

以下是我打开新终端但打开后无法写入的方法:

public class InterFace {
    public static void main(String[] args) {
        try {
            Process p = Runtime.getRuntime().exec("xterm");
            BufferedWriter w = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));

            w.write("ls");
            w.flush();
            w.close();

            BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));

            String s;
            while ((s = r.readLine()) != null) {
                System.out.println(s);
            }
        }
        catch (IOException io) {
            io.printStackTrace();
        }
    }
}

最佳答案

命令后需要行分隔符。

w.write("ls" + System.lineSeparator());

关于java - 打开两个终端进行读写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47082938/

相关文章:

java - 重量级的java对象是否应该通过setAttribute保存在session中?这是 servlet 开发的好习惯吗?

Java substring.equals 与 ==

python - 如何避免 Python 输入中的箭头键值?

macos - mac os x 中的 tar 命令添加 "hidden"文件,为什么?

c++ - 如何在 linux (Ubuntu 14.04) 中找到我的 OpenGL 版本

java - 如何使用 Spring Data JDBC 处理复合键

Java - 更新现有秒表代码以包括倒计时

java - 应用程序意外停止。强制关闭。该怎么办?

javascript - 终端输出 : manpath: can't set the locale; make sure $LC_* and $LANG are correct

python - 如何让终端更新脚本中的变量?