После завершения подпроцесса ffmpeg
, терминал становится испорченным - введенные символы невидимы! Вход по-прежнему работает в том, что команды могут быть выполнены, но ввод клавиатуры не отражается на терминале.
Выдача команды оболочки reset
возвращает все в норму (или !reset
изнутри ipython), поэтому обходной путь, который вызывает проблема, вызывает os.system('reset')
внутри script.
Другие вещи, которые я пробовал: import curses; curses.initscr()
до появления подпроцесса и curses.endwin()
после завершения, что несколько сработало, но сломало другие вещи. Другая, возможно, связанная с этим проблема заключается в том, что после нереста дочернего процесса интерактивный терминал становится лаггированным и иногда не может отображать типизированные символы.
Код для запуска процесса выглядит следующим образом:
with open('/tmp/stdout.log', 'w') as o:
with open('/tmp/stderr.log', 'w') as e:
proc = subprocess.Popen([args], stdout=o, stderr=e)
И позже, чтобы остановить его:
proc.terminate()
proc.communicate()
Что здесь может быть не так?