es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe alguna forma de actualizar las variables de entorno para un proceso en ejecución?

He visto varios mensajes sobre cómo refrescar terminales de PowerShell y CMD, pero no estoy seguro/a de si también existe una forma de actualizar las variables de entorno de un proceso en ejecución (sin reiniciarlo) que no sea ni PowerShell ni CMD. Estos mensajes me han sido de utilidad para comprender cómo funcionan las cosas en segundo plano:

https://superuser.com/questions/130029/refresh-environment-variable

https://www.michaelmiklis.de/update-environment-variables-in-current-process/

Y este mensaje (misma pregunta pero en relación a Linux) parece indicar que hay una forma en Linux:

https://stackoverflow.com/questions/8589221/changing-environment-variable-of-a-running-process

Me pregunto si existe un método similar en Windows. Mi suposición es que no, que es necesario reiniciar, pero no puedo encontrar una respuesta explícita negativa. La razón por la que me gustaría hacer esto es porque estoy trabajando en un sistema que prueba hardware. La herramienta de nivel superior es un secuenciador que puede llamar a varios módulos de código (Python, .NET, .exe, etc.). Desde esta herramienta de nivel superior, estoy llamando a un módulo de Python que espera que una variable de entorno específica esté establecida. Sin embargo, no sabré cuál debería ser esta variable hasta que se escanee un código de barras. He escrito código C# que puede establecer una variable de entorno y verificar si está establecida, pero dado que el proceso de nivel superior no ha sido informado del cambio, no es posible que el módulo de Python tenga el valor correcto de la variable a menos que se conozca de alguna manera antes de que todo comience.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología de la información especializado en Windows, no hay una manera directa de actualizar las variables de entorno de un proceso que ya está en ejecución en Windows. A diferencia de Linux, donde parece ser posible cambiar las variables de entorno de un proceso en ejecución a través del sistema de archivos /proc, esto no es así en Windows.

    En su lugar, el enfoque común es reiniciar el proceso para que pueda recoger las variables de entorno actualizadas. Sin embargo, en el escenario descrito por el usuario, reiniciar la herramienta de secuenciación de nivel superior puede no ser factible, ya que podría causar interrupciones en el proceso de prueba.

    Una posible solución es modificar el módulo de Python para que obtenga el valor de la variable de entorno requerida desde un archivo en lugar de leerlo directamente de la lista de variables de entorno. El código de C# puede entonces actualizar este archivo cada vez que se escanea un código de barras. De esta manera, el módulo de Python siempre obtendrá el último valor del archivo sin necesidad de reiniciar ninguno de los procesos.

    Otra posible solución es utilizar una herramienta como Windows Sysinternals Process Explorer, que puede manipular las variables de entorno de un proceso en ejecución. Sin embargo, este enfoque no se recomienda, ya que podría hacer que el proceso se bloquee y generalmente se considera arriesgado.

    En general, se recomienda reiniciar el proceso para actualizar las variables de entorno de un proceso en ejecución en Windows.

Comments are closed.