Re: éxécuter une commande linux depuis un programme java
Le Mardi 4 Mars 2003 22:36, Pierre-Yves Maunier a écrit :
> bonjour, je tente d'éxécuter une commende linux depuis un programme java :
> j'ai bien output.txt qui est créé avec le résultat de la comande mais le
> programme continue de tourner, je ne revient pas a la ligne de commande. je
> suis obliger d'interrompre le processus avec CTRL+C
> qqn aurait une idée la dessus ?
Bonjour,
Je pense que le problème vient du fait que dans le premier cas (en passant
la redirection dans la ligne de commande), ce travail est géré par Linux,
alors que si "> output.txt" est écrit dans le code Java, c'est le sh exécuté
par la VM qui s'en charge; Donc il n'y a aucun retour de la part de ce
process-là.
Le problème est donc du au fait que la méthode read(byte[]) est bloquante.
Pour éviter le problème, il faut soit mettre un timeout (avec un Thread à
part), soit utiliser une méthode non bloquante (pas facile à trouver en Java
sauf peut être si on utilise la méthode read() de l'InputStream directement).
En espérant fournir une aide,
Jean-Luc Rossiny
Reply to: