我正在編寫使用Win32 API檢測Java版本的代碼。例如。命令行「java -version」將結果發送到stdOut或stdErr?
基本上,我下面的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接收字符串是否有意義?
爲什麼?它在哪裏說它到標準輸出?你期望的基礎是什麼? – EJP
我不知道Java使用stdout或stderr的轉換。我的基礎是在運行過程中,「似乎」沒有發生任何錯誤,所以期望它進入stdout是非常直觀的。 – milesma