gpt4 book ai didi

java - 如何检测java应用程序中运行JVM的终端

转载 作者:行者123 更新时间:2023-12-01 16:28:29 25 4
gpt4 key购买 nike

我正在创建一个小型 CLI java 应用程序。
我在 Windows 上管理一致的清屏功能时遇到一些麻烦。
我找到的所有解决方案都是基于检测操作系统。
类似于:
System.getProperty("os.name").indexOf("win") >= 0
并应用已记录的 Java: Clear the console 之一答案取决于是否是Windows。

这种方法的缺点是,如果您在 cmd、git-bash 或 Cygwin 终端中运行 Java 应用程序,则清晰屏幕的工作方式不同。您不能在 git-bash 中应用 cmd 清屏,反之亦然。

基于此,我更愿意检测我正在运行的终端。
我想检查 Linux 特定命令是否会失败,使用 ProcessBuilder 作为检测我是否位于 cmd 终端的方法,但我能想到的所有命令也存在于 cmd 终端中:ls, grep、awk。这可能是因为我安装了 WSL(Windows Linux 子系统),但我不确定。

有没有办法检测运行 JVM 的终端?

最佳答案

实现此目的的一个简单方法是内省(introspection)系统进程的环境变量。
您可以使用 ProcessBuilder 通过检查 PS1 环境变量是否已定义来实现此目的。

这是我发现的变量,它可能并不完全可靠,并且可能存在于您的 Windows 环境中。在这种情况下,请在 ProcessBuilder.environment() 返回的集合中找到另一个。

  ProcessBuilder pb = new ProcessBuilder();
if(pb.environment().containsKey("PS1")) {
System.out.println("non Windows console");
} else {
System.out.println("Windows console");
}

关于java - 如何检测java应用程序中运行JVM的终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62108747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com