После завершения подпроцесса ffmpeg
терминал портится - напечатанные символы невидимы! Ввод все еще работает в том, что команды могут быть выполнены, но ввод с клавиатуры не выводится на терминал.
Выдача команды оболочки reset
возвращает все в нормальное состояние (или !reset
из ipython), поэтому в качестве обходного пути проблема вызывает os.system('reset')
внутри скрипта.
Другие вещи, которые я пробовал: 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()
Что здесь может пойти не так?