0
我運行一個小的Java函數,調用另一個Java程序並顯示其輸入。Java:垃圾輸入流
private static void call() throws Exception
{
int line;
///Other stuff here
Process p2= Runtime.getRuntime().exec("java SelfModifying");
InputStream is = p2.getInputStream();
//p.waitFor();
while ((line = is.read()) != -1) {
System.out.println("result: " + line);
}
Runtime.getRuntime().exit(0);
}
gests調用的prorgam應該返回一個int值:'10'。
相反,我得到4線: 結果:49 結果:48 結果:13 結果:10
在哪裏其他三個值從何而來?它們是確定性的,但似乎來自於輸入。當我自己運行程序時,它不返回這3行。
何必呢?爲什麼不啓動一個類加載器,加載另一個主類並通過反射直接調用'main'?附:盲目地將讀取的結果從「InputStream」(單個字節)轉換爲「String」並不會產生任何有用的結果。您需要使用具有正確編碼集的「InputStreamReader」。 –
您正在讀取流中的單個字節:49是ASCII''1''; 48是ASCII''0'; 13是ASCII''\ r''; 10是ASCII''\ n''。 –