Pour une raison quelconque, ce code ne fonctionne que lorsque je ferme le flux de sortie. Comment puis-je le faire fonctionner sans avoir à le fermer? Je veux le garder ouvert afin que je puisse continuer à envoyer des données au processus sans le redémarrer.E/S Java sur le tube
ProcessBuilder pbuilder = new ProcessBuilder(procCmds);
pbuilder.directory(new File(workingDir));
Process p = pbuilder.start();
BufferedWriter outputStream = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
String str = "hello world heard from java\n";
outputStream.write(str, 0, str.length());
outputStream.flush();
System.out.println("wrote " + str);
BufferedReader errorStream = new BufferedReader(new InputStreamReader(p.getErrorStream()));
BufferedReader inputStream = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while((line=errorStream.readLine())!=null)
System.out.println(line);
while((line=inputStream.readLine())!=null)
System.out.println(line);
//p.waitFor();
outputStream.close();
errorStream.close();
inputStream.close();
Avez-vous essayé la méthode flush()? – Reddy
Oui, je l'ai fait. C'est dans le code là-bas. outputStream.flush(). – jortiz81