【发布时间】:2016-03-20 16:14:04
【问题描述】:
我正在编写代码以使用 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接收字符串有意义吗?
【问题讨论】:
-
为什么?它在哪里说它进入标准输出?您期望的依据是什么?
-
不知道Java使用stdout或者stderr的转换。我的基础是在运行期间,“似乎”没有发生错误,所以很直观地期望它会进入标准输出。