Estoy usando Python 2.6 en Windows 7. Tengo el archivo .cmd de Windows que invoca a Python para ejecutar el servidor web CherryPy (versión 3.1.2). Comienzo este archivo .cmd ejecutándolo en el indicador en un shell de Windows CMD. Cuando CherryPy nota que uno de sus archivos dependientes ha cambiado, se reinicia. Hay un par de problemas que surgen en esta configuración en Windows, porque la invocación que CherryPy usa para reiniciarse es
os.execv(sys.executable, args)
pero no puede invocar el ejecutable de Python en el archivo .cmd. He logrado evitar ese problema a través de varios ejercicios de gimnasia de Python, y ahora lo tengo reiniciando llamando (esencialmente)
os.execv(sys.argv[0], args)
Pero el proceso reiniciado se separa del teclado; cogerá Ctrl-C, y luego me preguntan
Terminate batch job (Y/N)?
pero el tipo Y o N I no es capturado por el archivo .cmd de terminación, sino por el shell de CMD de Windows, y responde
"Y" is not recognized as an internal or external command, operable program or batch file.
Entonces, ¿cómo configuro las cosas en Windows para mantener el proceso reiniciado en lo que "llamaría" el primer plano "en Unix?
Respuestas
-3 para la respuesta № 1Puedes usar el método subprocess.call como este ejemplo
import subprocess
retcode = subprocess.call(["ls", "-l"])
Consulte este enlace para obtener más información sobre la clase de subproceso:
subproceso - gestión de subproceso