java - 命令行 "java -version"会将结果发送到 stdOut 或 stdErr?

标签 java winapi

<分区>

我正在编写代码以使用 Win32 API 来检测 java 的版本。例如

基本上,我在关注 MSDN Creating a Child Process with Redirected Input and Output https://msdn.microsoft.com/en-us/library/ms682499%28VS.85%29.aspx

string GetJavaVersion(string sJavaExePath) {
}

这是伪客户端代码:

ASSERT(GetJavaVersion("C:\Program Files (x86)\Java\jdk1.7.0_17\bin\java.exe") == "1.7.0_25");

我可以得到如下结果:

java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b17)
Java HotSpot(TM) Client VM (build 23.25-b01, mixed mode, sharing)

然而,结果是从 stdErr 发回的,而我认为它应该从 stdOut 返回。

从 stdErr 接收字符串有意义吗?

最佳答案

答案是标准错误。我们可以分别重定向 stderr 和 stdout 看看,

$ java -version 2>stderr.txt 1>stdout.txt
$ cat stderr.txt 
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)

您还可以将 stderr 重定向到 stdout,

$ java -version 2>&1

这将允许您从标准输出读取它。

关于java - 命令行 "java -version"会将结果发送到 stdOut 或 stdErr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34279615/

相关文章:

java - 如何使用查询语法在 Lucene 中跨多个字段进行搜索?

java - 如何使用 VSCode 中的 Redhat 服务器连接器扩展在 JBoss 中启用热部署

python - 看门狗兼容性 : A workaround for "CancelIoEx"

python - Pamie 和 python-win32 问题 pamie3 不工作

java - 具体来说,.setWidth 或 .setHeight 使用哪种 Integer?

java - Java 中的流比原生 for 循环慢得多 - 为什么?

java - Eclipse IDE 设置仅类的方法在包资源管理器中可见

C++ Hook 成员函数和原始函数返回垃圾值。

c# - 如何从虚拟键代码转换为 System.Windows.Forms.Keys

c++ - 在读取缓冲区已满时使用 select 检查套接字是否可写