J'écris un programme Java pour capturer la sortie d'une commande de terminal. Dans des conditions « normales », à savoir où j'exécuter la commande directement dans le terminal moi-même, je peux voir le résultat suivant:Java runtime getInputStream ignore la majorité de la sortie de la commande du terminal
Cependant, la sortie rendu par mon programme Java capture seulement un petit sous-ensemble de cette , voir ici:
C'est la base de code dont je parle:
import java.io.*;
class evmTest {
public static void main(String[] args) {
String evmResult = "";
String evmCommand = "evm --debug --code 7f00000000000000000000000000000000000000000000000000000000000000027f00000000000000000000000000000000000000000000000000000000000000027f00000000000000000000000000000000000000000000000000000000000000020101 run";
try {
Runtime r = Runtime.getRuntime();
Process p = r.exec(evmCommand);
BufferedReader in = new BufferedReader(new
InputStreamReader(p.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
evmResult += inputLine;
}
in.close();
} catch (IOException e) {
System.out.println(e);
}
}
}
Jusqu'à présent, je n'ai pas été en mesure de déterminer pourquoi ce code est seulement capable d'émettre le dérisoire 0x
. J'ai posté cette question dans l'espoir que quelqu'un puisse m'aider à trouver la cause de cette erreur.
Vous devez lire ces flux dans des threads séparés, ou les fusionner. – EJP