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