[Users-fr] Accéder à Scilab en mode batch depuis Java

Victor Noël victor.noel at irit.fr
Jeu 4 Oct 17:49:40 CEST 2012


Bonjour,

Nous utilisons Scilab dans un projet de recherche où il est nécessaire 
d'exécuter plusieurs sessions en parallèles depuis java.

Comme cela n'est pas possible avec javasci, nous avons opté pour l'exécution 
de scilab en mode batch avec écriture et lecture sur les entrées standards.

La version courte de notre problèmes est que cela marche sous Windows, mais 
pas sous Linux !

Plus précisément, après avoir créé le processus, la lecture sur la sortie 
standard bloque.

Le genre de code que nous avons est la suivant (avec Scilab 5.3.3):

String _SCILAB = "/usr/bin/scilab";
String[] _SCILAB_BATCH = {_SCILAB, "-nwni", "-nb"};
Process _process;
	
PrintWriter _writer;
Reader _reader;

ProcessBuilder pb = new ProcessBuilder(_SCILAB_BATCH);

_process = pb.start();
		
_writer = new PrintWriter(new OutputStreamWriter(_process.getOutputStream()));
_reader = new InputStreamReader(_process.getInputStream());
		
_writer.format("mode(-1);%n");
_writer.flush();

_writer.format("write(%%io(2),'test');%n");
_writer.flush();

// ça bloque ici !
int r = _reader.read();
while (r != -1) {
	r = _reader.read();
	System.out.print((char)r);
}

Qu'en pensez-vous ? Je me retrouve bloqué là, j'ai fais le tour des conseils 
sur ce genre de problèmes lors de l'exécution de processus et la lecture des 
entrées sorties mais je n'ai rien trouvé de probant !
Je me demande presque si ça ne peut pas venir de scilab lui-même ?

Merci pour votre aide !

Victor



Plus d'informations sur la liste de diffusion users-fr