Problema con runtime y process :S

Iniciado por Debci, 15 Julio 2009, 16:37 PM

0 Miembros y 1 Visitante están viendo este tema.

Debci

Bueno amigos, aqui esta mi nueva duda, he hehco una clase que ejeucta un comando y por systrem.out.println me devuelkve su out de consola, peor solo me lo devuleve cuando son valores tipo int , por ejemplo si ejecuto echo 1 me devuleve 1, pero si ejecuto echo Hola, no em devuelve nada se queda parado.
Es decir que las strigns no me las devuelve.


Código (java) [Seleccionar]
public class Ejecutar{

    public void prueba(){
        try
       {
           // Se lanza el ejecutable.
           Process p=Runtime.getRuntime().exec ("echo 1");

           // Se obtiene el stream de salida del programa
           InputStream is = p.getInputStream();

           /* Se prepara un bufferedReader para poder leer la salida más comodamente. */
           BufferedReader br = new BufferedReader (new InputStreamReader (is));

           // Se lee la primera linea
           String aux = br.readLine();

           // Mientras se haya leido alguna linea
           while (aux!=null)
           {
               // Se escribe la linea en pantalla
               System.out.println (aux);

               // y se lee la siguiente.
               aux = br.readLine();
           }
       }
       catch (Exception e)
       {
           // Excepciones si hay algún problema al arrancar el ejecutable o al leer su salida.*/
           e.printStackTrace();
       }
    }


Y lo llamo usando:

Ejecutar ejecutar = new Ejecutar();
       ejecutar.prueba();


Y en este caso si que funciona, me devuelve 1, pero si envezde ejecutar echo1 ejecuto echo Hola, nada...

espero que me den una solucion.

saludos

Casidiablo

Umm... a mi me funciona normal. Te adjunto el código modificado.

Código (java) [Seleccionar]
import java.io.*;
public class Ejecutar{

public void prueba(){
try
{
// Se lanza el ejecutable.
Process p=Runtime.getRuntime().exec ("echo hola");

// Se obtiene el stream de salida del programa
InputStream is = p.getInputStream();

/* Se prepara un bufferedReader para poder leer la salida más comodamente. */
BufferedReader br = new BufferedReader (new InputStreamReader (is));

// Se lee la primera linea
String aux = br.readLine();

// Mientras se haya leido alguna linea
while (aux!=null)
{
// Se escribe la linea en pantalla
System.out.println (aux);

// y se lee la siguiente.
aux = br.readLine();
}
}
catch (Exception e)
{
// Excepciones si hay algún problema al arrancar el ejecutable o al leer su salida.*/
e.printStackTrace();
}
}
}


Código (java) [Seleccionar]
public class test{
public static void main(String args[]){
Ejecutar ejecutar = new Ejecutar();
ejecutar.prueba();
}
}


Un saludo!

Debci

si ejecuto por ejemplo un cd... o un sudo... no funciona (he antepuesto el comando "sh", "-c" en un array de cadenas.

saludos

Debci


sapito169

as probado poniendo cmd antes de ejecutar el comando

Debci

Cita de: sapito169 en 21 Julio 2009, 21:10 PM
as probado poniendo cmd antes de ejecutar el comando

cmd es windows, yo uso linux.
gracias ya he puesto sh que es el equivalente al cmd.

saludos

BEATMASTER

pues a mi me pasaba algo similar, no me salia en la visualizacion un "ls" que intentaba hacer a una carpeta  peor en realdiad si lo ejecutaba, me di cuenta porque le puse "ls > archivo.txt" y en la carpeta donde ejecutaba el programa creaba ela rchivo.txt con el contenido de es carpeta, aun caundo en la salida de la consola no me aparecia nada, me aprece que debe ser algun problema del stream reader y  el valor devuelto por el comando, no se pero yo lo que queria era ahcer un ls y saber el nombre de todos los archivos ene sa carpeta para poder renombrarlos asi que  guardando ena rchivo  el resultado no tuve amyor problema :s