Después de terminar un subproceso ffmpeg
, el terminal se arruina: los caracteres mecanografiados son invisibles. La entrada todavía funciona porque los comandos se pueden ejecutar, pero la entrada del teclado no se repite en el terminal.El texto del terminal se vuelve invisible después de terminar el subproceso
Emitiendo el comando de shell reset
pone todo nuevamente a la normalidad (o !reset
desde dentro de ipython), por lo que una solución al problema es llamar al os.system('reset')
dentro del script.
Otras cosas que he intentado: import curses; curses.initscr()
antes de generar el subproceso y curses.endwin()
después de la terminación, que funcionó un poco pero quebró otras cosas. Otro problema posiblemente relacionado es que después de generar el proceso secundario, el terminal interactivo se vuelve lento y algunas veces no captura los caracteres escritos.
El código para generar el proceso es así:
with open('/tmp/stdout.log', 'w') as o:
with open('/tmp/stderr.log', 'w') as e:
proc = subprocess.Popen([args], stdout=o, stderr=e)
Y más tarde para detenerlo:
proc.terminate()
proc.communicate()
Qué podría ir mal aquí?
Supongo que tiene algo que ver con 'stdout = o, stderr = e' – warvariuc
El mismo problema existe en django runserver cuando se vuelve a cargar. –
he redirigido stdout y stderr a os.devnull y el problema persiste – wim