From b14c27c7bbfbf0b99573c1cc8601dc2b971ffe03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Tue, 6 May 2025 16:04:09 +0200 Subject: [PATCH] cmd: wait on status after killing process --- pkgs/clan-cli/clan_cli/cmd.py | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/pkgs/clan-cli/clan_cli/cmd.py b/pkgs/clan-cli/clan_cli/cmd.py index e64392008..0364bd8e1 100644 --- a/pkgs/clan-cli/clan_cli/cmd.py +++ b/pkgs/clan-cli/clan_cli/cmd.py @@ -198,21 +198,33 @@ def terminate_process_group(process: subprocess.Popen) -> Iterator[None]: pass +def _terminate_process(process: subprocess.Popen) -> None: + try: + process.terminate() + except ProcessLookupError: + return + + with contextlib.suppress(subprocess.TimeoutExpired): + # give the process time to terminate + process.wait(3) + return + + try: + process.kill() + except ProcessLookupError: + return + + with contextlib.suppress(subprocess.TimeoutExpired): + # give the process time to terminate + process.wait(3) + + @contextmanager def terminate_process(process: subprocess.Popen) -> Iterator[None]: try: yield finally: - try: - process.terminate() - try: - with contextlib.suppress(subprocess.TimeoutExpired): - # give the process time to terminate - process.wait(3) - finally: - process.kill() - except ProcessLookupError: - pass + _terminate_process(process) class TimeTable: