Quiero abrir un proceso en segundo plano e interactuar con él, pero este proceso debería ser invisible tanto en Linux como en Windows. En Windows hay que hacer algunas cosas con STARTUPINFO, mientras que esto no es válido en Linux:Subproceso multiplataforma con ventana oculta
ValueError: startupinfo is only supported on Windows platforms
¿Existe una manera más sencilla de crear un comando separado Popen para cada sistema operativo?
if os.name == 'nt':
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
proc = subprocess.Popen(command, startupinfo=startupinfo)
if os.name == 'posix':
proc = subprocess.Popen(command)
Aha. Intenté startupinfo = '' y no funcionó. Esta es la respuesta que estaba buscando. – endolith
Acabo de mirar a través del código de subproceso para ver cómo generan ese mensaje de error y comprueban si startupinfo no es None, como debería ser en python –
Si configura 'STARTF_SHOWWINDOW', también querrá inicializar el miembro' wShowWindow' de 'startupinfo' a una de las constantes' SW_ * '. Este método se basa en el programa que ejecuta realmente actuando sobre el indicador 'wShowWindow'; no es obligatorio hacerlo. –