From 7e84cd7a1c72dbe8a51a5dd14352214fb15cad0d Mon Sep 17 00:00:00 2001 From: "Michal Krenek (Mikos)" Date: Tue, 21 Mar 2017 23:39:30 +0100 Subject: [PATCH] Fix another Windows peculiarity. How can anyone sane use that fscking OS?!? --- qspectrumanalyzer/backends/soapy_power.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/qspectrumanalyzer/backends/soapy_power.py b/qspectrumanalyzer/backends/soapy_power.py index e57c4ab..1c0ad6f 100644 --- a/qspectrumanalyzer/backends/soapy_power.py +++ b/qspectrumanalyzer/backends/soapy_power.py @@ -1,4 +1,4 @@ -import os, subprocess, pprint, sys, shlex +import os, subprocess, pprint, sys, shlex, signal import numpy as np from Qt import QtCore @@ -130,7 +130,14 @@ class PowerThread(BasePowerThread): cmdline.extend(shlex.split(additional_params)) # Start soapy_power process and close write part of pipe - self.process = subprocess.Popen(cmdline, close_fds=False, universal_newlines=False) + if sys.platform == 'win32': + creationflags = subprocess.CREATE_NEW_PROCESS_GROUP + else: + creationflags = 0 + + self.process = subprocess.Popen(cmdline, close_fds=False, universal_newlines=False, + creationflags=creationflags) + os.close(self.pipe_write_fd) if sys.platform == 'win32': self.pipe_write_handle.Close() @@ -140,7 +147,10 @@ class PowerThread(BasePowerThread): with self._shutdown_lock: if self.process: try: - self.process.terminate() + if sys.platform == 'win32': + self.process.send_signal(signal.CTRL_BREAK_EVENT) + else: + self.process.terminate() except ProcessLookupError: pass self.process.wait()