#!/usr/bin/env python3
import atexit
+import logging
import shlex
import subprocess
from typing import List, Optional
+logger = logging.getLogger(__file__)
+
+
+def cmd_showing_output(command: str) -> None:
+ p = subprocess.Popen(
+ command,
+ shell=True,
+ bufsize=0,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ )
+ for line in iter(p.stdout.readline, b''):
+ print(line.decode('utf-8'), end='')
+ p.stdout.close()
+ p.wait()
+
+
def cmd_with_timeout(command: str, timeout_seconds: Optional[float]) -> int:
"""
Run a command but do not let it run for more than timeout seconds.
stderr=subprocess.DEVNULL)
else:
subproc = subprocess.Popen(args, stdin=subprocess.DEVNULL)
+
def kill_subproc() -> None:
try:
if subproc.poll() is None:
subproc.terminate()
subproc.wait(timeout=10.0)
except BaseException as be:
- log.error(be)
+ logger.exception(be)
atexit.register(kill_subproc)
return subproc