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

时间:2015-12-15 01:33:02

标签: java winapi

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

基本上,我正在关注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接收字符串是否有意义?

1 个答案:

答案 0 :(得分:2)

答案是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

允许你从stdout读取它。