avocado.utils.process: Add new SubProcess API send_signal()

Add send_signal(), that lets us to send arbitrary signals
to subprocesses, and rewrite kill() and terminate() in
terms of it.
Signed-off-by: NLucas Meneghel Rodrigues <lmr@redhat.com>
上级 10bc2d40
...@@ -203,21 +203,23 @@ class SubProcess(object): ...@@ -203,21 +203,23 @@ class SubProcess(object):
""" """
Send a :attr:`signal.SIGTERM` to the process. Send a :attr:`signal.SIGTERM` to the process.
""" """
try: self.send_signal(signal.SIGTERM)
os.kill(self.sp.pid, signal.SIGTERM)
except:
pass
def kill(self): def kill(self):
""" """
Send a :attr:`signal.SIGKILL` to the process. Send a :attr:`signal.SIGKILL` to the process.
""" """
try: self.send_signal(signal.SIGKILL)
os.kill(self.sp.pid, signal.SIGKILL)
except:
pass
def wait(self, timeout=None): def send_signal(self, sig):
"""
Send the specified signal to the process.
:param sig: Signal to send.
"""
self.sp.send_signal(sig)
def wait(self, timeout=None, sig=signal.SIGTERM):
""" """
Wait for the process to end, filling and returning the result attr. Wait for the process to end, filling and returning the result attr.
...@@ -243,7 +245,7 @@ class SubProcess(object): ...@@ -243,7 +245,7 @@ class SubProcess(object):
timeout = 1 timeout = 1
if self.result.exit_status is None: if self.result.exit_status is None:
self.terminate() self.send_signal(sig)
# Timeout here should be 1 second (see comment above) # Timeout here should be 1 second (see comment above)
stop_time = time.time() + timeout stop_time = time.time() + timeout
while time.time() < stop_time: while time.time() < stop_time:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册