Terminal text becomes invisible after terminating subprocess Terminal text becomes invisible after terminating subprocess python python

Terminal text becomes invisible after terminating subprocess


Change the script so that proc.terminate() is not used. You can stop an ffmpeg subprocess more politely with

  proc.send_signal(signal.SIGINT)  proc.wait()

This allows ffmpeg the chance to write whatever escape sequences it needs to restore the terminal.


edit: discovered later- another tip to make ffmpeg behave better with Popen is to provide it a subprocess.PIPE or open(os.devnull) in the stdin handle. Otherwise, it seems to try to get input from the parent's stdin which can cause weird terminal behaviour. A running ffmpeg process is listening for '?' and 'q' input on stdin.


As stated in this answer, ffmpeg expects data from stdin. You can run ffmpeg with the -nostdin flag and it will keep your terminal from hiding keystrokes.


do you communicate with the subprocess? in that case i would use pexpect which makes that type of setup very simple, perhaps you must wait for the command to finish? i.e.

 p = subprocess.Popen(argv, stdout=o, stderr=e) p.wait() if p.returncode != 0:      print("problems")

that's what i use on a dvd2h264 script i wrote a while back, never had any problems with it, but i don't redirect stdin/stderr to tmpfiles..