import logging
import shlex
import subprocess
+import sys
from typing import List, Optional
def cmd_showing_output(command: str) -> None:
+ line_enders = set([b'\n', b'\r'])
p = subprocess.Popen(
command,
shell=True,
bufsize=0,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
+ universal_newlines=False,
)
- for line in iter(p.stdout.readline, b''):
- print(line.decode('utf-8'), end='')
- p.stdout.close()
+ for char in iter(lambda: p.stdout.read(1), b''):
+ sys.stdout.buffer.write(char)
+ if char in line_enders:
+ sys.stdout.flush()
p.wait()