Agregar variables ambientales programáticamente al proceso actual [cerrado]

La intención principal es establecer las variables de entorno a través del código Java.

Process process = Runtime.getRuntime().exec("export MY_ENV=123");

Siempre devuelve un nuevo proceso. Pero quiero que se ejecute para el proceso actual... ¿Hay alguna forma de agregar la salida al proceso actual?

preguntado Oct 07 '14, 14:10

Vea también Cuando Runtime.exec () no para muchos buenos consejos sobre cómo crear y manejar un proceso correctamente. Entonces ignoralo se refiere a exec y usar un ProcessBuilder para crear el proceso. -

Esto ha sido respondido aquí. No es una buena idea cambiar toda la pregunta de esa manera. Le sugiero que revierta su edición. -

2 Respuestas

Utilice la herramienta ProcessBuilder

  • inheritIO le permite conectar las secuencias del proceso iniciado con el proceso actual
  • waitFor le permite esperar a que finalice el proceso externo

Ejemplo:

new ProcessBuilder("/bin/ls").inheritIO()
                             .start()
                             .waitFor();

Respondido 07 Oct 14, 14:10

¡¡El métodoHeredarIo() funcionó a las mil maravillas!! - shashantrika

El Process regresado de la exec La llamada contiene tres flujos:

  1. process.getOutputStream() que, si escribe, se 'encauzará' al proceso en ejecución
  2. process.getInputStream() que, si se lee, contendrá la salida estándar (el ls salida)
  3. process.getErrorStream() whihc, si se lee, contendrá la salida de error estándar (mensajes de error de la ejecución ls, Si alguna).

Es su responsabilidad como programador leer estos flujos y enviarlos a la salida de su programa, si eso es lo que desea.

Asimismo, debe comprobar la process.exitValue() si quieres conseguir eso también.

es algo común configurar subprocesos separados para monitorear las transmisiones Stdout y Stderr

Respondido 07 Oct 14, 14:10

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.