Cómo Programar O Llamar a Procesos En Java

En esta ocasión voy a explicar lo básico para crear un Proceso en Java. Un proceso es un programa o una parte de este programa, que hace un cálculo o función. Normalmente estos programas se comunican con otros a través de flujos en XML o JSON. Para programar nuestro primer proceso que llama a otro proceso o «pippe», vamos a escribir el siguiente código;

String prog = "programa.jar";
Runtime r = Runtime.getRuntime();        
Process proceso = r.exec("java -jar " + prog);;

Ahora vamos a explicar cómo hacer esto mismo pero de otra manera. Esta otra manera es más versátil, y se pueden hacer cosas aún más chulas, que con el comando anterior, se pueden hasta emplear otros procesos dentro de otros procesos. Antes de nada me gustaría explicar qué son los argumentos, y para qué se utilizan.Cuando escribimos un comando en Linus, este tiende a ser algo así:

ffmpeg -i input.mpg output.mp4

ffmpeg es el programa, y el resto de las opciones se llaman argumentos, que no dejan de ser opciones dentro del mismo programa. En Java todo va por la variable args, para unificar todos los argumentos podemos hacerlo con:

            String str="";
            for (int i=0;i<args.length;i++){
                str=str+" "+args[i];
            }

Una vez visto esto, podremos hacer un split(» «), y ahora vemos el segundo tipo de comando:

ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command(arraySplit);
Process proceso = processBuilder.start();

Bien lo siguiente, y es lo más interesante es obtener todo lo que devuelve el comando. Para ello hará falta las siguientes clases/comandos:

//Ejecutamos el proceso
            try (BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(proceso.getOutputStream()))) {
                bufferedWriter.write("\n");
                bufferedWriter.flush();
            }
            //mostramos los resultados
            try(BufferedReader bufferedReader =new BufferedReader(new InputStreamReader(proceso.getInputStream()))){
                texto=bufferedReader.readLine();
                System.out.println(texto);
            }

Hasta aquí dejo el tutorial de hoy, si tenéis alguna inquietud, ya sabéis que podéis contactar conmigo, para cualquier cosa estoy por aquí. Si necesitais clases o formación online, estes estudiando en instituto, universidad o simplemente seas autodidacta, puedes contactar conmigo y te puedo ayudar. Muchas gracias por todo, un saludo y hasta la próxima, chao.

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!

Descubre más desde InfoGonzalez - Blog de formador e informático

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad
Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.