0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 03:31:50 +02:00

feat: properly handle SIGINT (ctrl-c) in BEC GUI server -> calls qapplication.quit()

This commit is contained in:
2024-06-17 17:46:00 +02:00
committed by wyzula_j
parent d1266a1ce1
commit 3644f344da
2 changed files with 14 additions and 1 deletions

View File

@ -93,7 +93,12 @@ def _start_plot_process(gui_id, gui_class, config) -> None:
env_dict = os.environ.copy()
env_dict["PYTHONUNBUFFERED"] = "1"
process = subprocess.Popen(
command, text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env_dict
command,
text=True,
start_new_session=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
env=env_dict,
)
process_output_processing_thread = threading.Thread(target=_get_output, args=(process,))
process_output_processing_thread.start()

View File

@ -1,4 +1,5 @@
import inspect
import signal
import sys
from contextlib import redirect_stderr, redirect_stdout
from typing import Union
@ -200,6 +201,13 @@ def main():
app.aboutToQuit.connect(server.shutdown)
def sigint_handler(*args):
# display message, for people to let it terminate gracefully
print("Caught SIGINT, exiting")
app.quit()
signal.signal(signal.SIGINT, sigint_handler)
sys.exit(app.exec())