[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: