Runtime.getRuntime de comandos (). Exec () para ejecutar la secuencia de comandos y el bloqueo de introducción

 el desarrollo de proyectos de Java en la empresa, si se trata de necesidades funcionales obligatorios, y de simple aplicación java, llama a la secuencia de comandos de servidor realizar. En Java, Runtime.getRuntime (). Exec () para lograr esta funcionalidad.

    Uso: Proceso pública exec (cadena de comando) ----- Ejecuta el comando de cadena especificada en un proceso separado.

 

       Proceso pública exec (String [] cmdArray) --- Ejecuta el comando y los argumentos especificados en un proceso separado

 

                       exec proceso público (comando String, String [] envp) ---- Ejecuta el comando y los argumentos especificados en un proceso independiente con el entorno especificado

 

                       Proceso pública exec (String [] cmdArray, String [] envp) ---- Ejecuta el comando y los argumentos especificados en un proceso independiente con el entorno especificado

 

                       Proceso pública exec (comando String, String [] envp, dir File) ---- Ejecuta el comando de cadena especificada en un proceso separado con el medio ambiente y el directorio de trabajo

 

                       exec proceso público (String [] cmdarray, String [] envp, dir File) ---- ejecuta el comando y los argumentos especificados en un proceso separado con el medio ambiente y el directorio de trabajo

 

 

Por ejemplo:

 

         1. Runtime.getRuntime () exec (cadena de comando ) ;.
 
                         equivalente a llamar en las ventanas / Start / programas y archivos de comandos, como la búsqueda                              

                         Runtime.getRuntime () exec ( "notepad.exe") ;. ------- Bloc de notas abrir las ventanas.

 

 

        2. exec proceso público (String [] cmdArray);

             En Linux:

             Runtime.getRuntime () exec (nuevo String [] { "/ bin / sh", "- c", ".;

             En Windows:

             . Runtime.getRuntime () exec (nuevo String [] { "cmd", "/ c", cmds});

 

 

profundidad:  

            Procesar de varias maneras:

                        1.destroy (): matar al proceso hijo

 

2.exitValue (): Devuelve el valor de salida del proceso hijo, un valor de 0 indica la terminación normal

 

3.getErrorStream (): Obtiene el flujo de error proceso hijo

 

4.getInputStream (): Obtiene el flujo de entrada del proceso hijo

 

5.getOutputStream (): obtener la secuencia de salida de proceso hijo

 

6.waitFor (): hace que el hilo actual de esperar, si es necesario, hasta que el proceso representado por este objeto de proceso ha terminado. Si el proceso hijo ha terminado, este método devuelve inmediatamente. Si no termina el proceso hijo, el subproceso de llamada se bloquea hasta que el proceso finalice niño, por convención, 0 indica la terminación normal

 

          Nota: En Java, llamando al tiempo de ejecución de la escritura de ejecución del hilo es muy intensivos en recursos, por lo que no evite el uso frecuente!

         

                    Cuando llamar la ejecución en tiempo de ejecución de la secuencia de comandos, de hecho, JVM abrió una sub-hilo para invocar el sistema de mando, donde la JVM, que se abrió tres canales: el flujo de entrada, la corriente de salida, corriente de error, la corriente de salida que es una llamada de sub-hilo de distancia canal.

                    Como todos sabemos, waitFor está esperando una ejecución del hilo hijo a partir del final de la ejecución de comandos, pero en tiempo de ejecución, el comando para abrir el programa si no se apaga, no es el final de la sub-hilo. Por ejemplo, el código siguiente.

                         Código: Proceso estática privada p = null;

                                            p = Runtime.getRuntime () exec ( "notepad.exe.");

    p.waitFor ();         

System.out.println ( "------------------------------------------- - I se llevó a cabo ");

                     Por encima, las ventanas abiertas en el bloc de notas. Si no cerramos manualmente el Bloc de notas, entonces no se ejecuta la instrucción de salida, esto es para ser entendido.  

 

  proceso de bloqueo:

                      Con el fin de llevar a cabo en tiempo de ejecución gran punto, el flujo de corriente de flujo de entrada y el error seguirá teniendo acceso al almacenamiento en la memoria de JVM, si el búfer está lleno de flujo no se lee, que hará que la obstrucción de tiempo de ejecución. Así que durante ejemplo: al copiar archivos de gran tamaño tales operaciones, también tenemos que seguir leyendo el flujo de búfer JVM, para evitar el bloqueo de punto muerto el tiempo de ejecución.

    

                    Código: Linux escrita archivos de copia para evitar la obstrucción

 

 

 

 

String [] cmdarray = new String [3];
cmdarray [0] = "cmd";
cmdarray [1] = "/ c";
cmdarray [2] = "ipconfig / all";
Runtime.getRuntime () exec (cmdarray).;

cmdarray [0] = "cmd";
cmdarray [1] = "/ c";
cmdarray [2] = "ping 127.0.0.1 ";
Runtime.getRuntime (). Exec (cmdarray)

Publicados 316 artículos originales · ganado elogios 33 · vistas 210 000 +

Supongo que te gusta

Origin blog.csdn.net/yz18931904/article/details/104337973
Recomendado
Clasificación