From 7e56f2577f9462a9f8264da8b47bd0ca501204f7 Mon Sep 17 00:00:00 2001 From: Haodong Du Date: Tue, 3 Aug 2021 11:59:30 -0400 Subject: [PATCH] fix the issue of prevabs not killed after timeout --- msgpi/utils.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/msgpi/utils.py b/msgpi/utils.py index 14ac633..ea5120c 100644 --- a/msgpi/utils.py +++ b/msgpi/utils.py @@ -1,4 +1,5 @@ import os +import signal import math import subprocess as sbp import numpy as np @@ -12,15 +13,15 @@ def run(cmd, timeout, scrnout): # sbp.call(cmd) proc = sbp.Popen(cmd) else: - FNULL = open(os.devnull, 'w') + # FNULL = open(os.devnull, 'w') # sbp.call(cmd, stdout=FNULL, stderr=sbp.STDOUT) - proc = sbp.Popen(cmd, stdout=FNULL, stderr=sbp.STDOUT) + proc = sbp.Popen(cmd, stdout=sbp.DEVNULL, stderr=sbp.STDOUT,preexec_fn=os.setsid) try: stdout, stderr = proc.communicate(timeout=timeout) except sbp.TimeoutExpired as e: print('TimeoutExpired') - proc.kill() + os.killpg(os.getpgid(proc.pid), signal.SIGTERM) print('Process killed')