mirror of https://gitlab.com/ita1024/waf.git
Python3 - Kill processes in subprocess timeouts #1807
This commit is contained in:
parent
f7367c8051
commit
fdc3b47067
|
@ -24,6 +24,12 @@ if os.name == 'posix' and sys.version_info[0] < 3:
|
|||
else:
|
||||
import subprocess
|
||||
|
||||
try:
|
||||
TimeoutExpired = subprocess.TimeoutExpired
|
||||
except AttributeError:
|
||||
class TimeoutExpired(object):
|
||||
pass
|
||||
|
||||
from collections import deque, defaultdict
|
||||
|
||||
try:
|
||||
|
@ -856,10 +862,18 @@ def run_regular_process(cmd, kwargs, cargs={}):
|
|||
"""
|
||||
proc = subprocess.Popen(cmd, **kwargs)
|
||||
if kwargs.get('stdout') or kwargs.get('stderr'):
|
||||
try:
|
||||
out, err = proc.communicate(**cargs)
|
||||
except TimeoutExpired:
|
||||
proc.kill()
|
||||
out, err = proc.communicate(**cargs)
|
||||
status = proc.returncode
|
||||
else:
|
||||
out, err = (None, None)
|
||||
try:
|
||||
status = proc.wait(**cargs)
|
||||
except TimeoutExpired:
|
||||
proc.kill()
|
||||
status = proc.wait(**cargs)
|
||||
return status, out, err
|
||||
|
||||
|
|
|
@ -13,6 +13,12 @@ try:
|
|||
except ImportError:
|
||||
import subprocess
|
||||
|
||||
try:
|
||||
TimeoutExpired = subprocess.TimeoutExpired
|
||||
except AttributeError:
|
||||
class TimeoutExpired(object):
|
||||
pass
|
||||
|
||||
def run():
|
||||
txt = sys.stdin.readline().strip()
|
||||
if not txt:
|
||||
|
@ -25,6 +31,10 @@ def run():
|
|||
out, err, ex, trace = (None, None, None, None)
|
||||
try:
|
||||
proc = subprocess.Popen(cmd, **kwargs)
|
||||
try:
|
||||
out, err = proc.communicate(**cargs)
|
||||
except TimeoutExpired:
|
||||
proc.kill()
|
||||
out, err = proc.communicate(**cargs)
|
||||
ret = proc.returncode
|
||||
except (OSError, ValueError, Exception) as e:
|
||||
|
|
Loading…
Reference in New Issue