【问题标题】:Translating ProcessBuilder command into something Linux can understand将 ProcessBuilder 命令翻译成 Linux 可以理解的东西
【发布时间】:2018-08-06 20:57:01
【问题描述】:

你好堆栈溢出!

我目前正在开发一个 Java 程序,该程序本质上是一个用于龙与地下城风格冒险的数字化字符表。该程序大量使用了我制作的ClearScreen() 方法,该方法利用了进程构建器,如下所示:

new ProcessBuilder( "cmd", "/c", "cls" ).inheritIO().start().waitFor();

最近我了解到我的一个玩家有一台 Mac,因此我需要将这个进程构建器使用的 cmd 命令翻译成它的 Mac/Linux 等效项。我事先已经做了一些研究,并设法构建了以下 ProcessBuilder:

new ProcessBuilder("terminal","","clear");

但是,我不知道 /c 的等价物是什么,这是一个导致 CMD 在命令执行后关闭的参数。因此,我希望帮助填写缺失的论点(或者可能是实现相同结果的更有效方法)。提前谢谢!

(另外,对于任何滥用的术语,我提前道歉^^;我仍在学习如何用 Java 编程,而且我从未拥有过 Mac,所以我在这里有点摸不着头脑。我应该使用名为rubberglove.bat.bat 文件澄清程序运行在Windows 命令提示界面之外。)

【问题讨论】:

    标签: java windows macos processbuilder


    【解决方案1】:

    在 MacOS(和 GNU/Linux 和 *BSD)上,clear 是一个独立的程序,不需要额外的 shell 或程序的服务。直接调用即可:

    new ProcessBuilder("clear").inheritIO().start().waitFor();
    

    或者简单地打印等效的 ANSI 转义码以清除屏幕并将光标设置为原点。这适用于所有标准的类 Unix 终端,基本上是 clear 最终所做的:

    System.out.print("\u001B[H\u001B[J");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多