Files
face_unlock/app/util/shell_execute.py
2024-09-27 01:20:28 +08:00

34 lines
847 B
Python
Executable File

import base64
import json
import os
import sys
import time
import traceback
from io import StringIO
from subprocess import PIPE, Popen, TimeoutExpired
def popen(cmd, sys_env=True, **kwargs):
if sys_env and kwargs.get('env') is not None:
kwargs['env'] = os.environ.copy().update(kwargs['env'])
return Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, encoding='utf-8', **kwargs)
def execute(cmd, input_str=None, timeout=None, **kwargs):
p = popen(cmd, **kwargs)
try:
out, err = p.communicate(input_str, timeout=timeout)
except TimeoutExpired:
out = ''
err = get_exception()
p.kill()
stat = p.returncode
return stat, out, err
def get_exception():
with StringIO() as io:
traceback.print_exc(file=io)
io.seek(0)
content = io.read()
return content