From bb1fd118f511f8983808cd6fbf0dda711efcd5ea Mon Sep 17 00:00:00 2001 From: Bastian Schroll Date: Fri, 8 Mar 2019 07:43:19 +0100 Subject: [PATCH] little improvements in processManager class --- boswatch/processManager.py | 30 +++++++++++++----------------- bw_client.py | 22 ++++++++++++++++++++-- 2 files changed, 33 insertions(+), 19 deletions(-) diff --git a/boswatch/processManager.py b/boswatch/processManager.py index 6f2c7af..27d5f05 100644 --- a/boswatch/processManager.py +++ b/boswatch/processManager.py @@ -32,15 +32,12 @@ class ProcessManager: self._processHandle = None self._textMode = textMode - def __del__(self): - self.stop() - def addArgument(self, arg): """!add a new argument @param arg: argument to add as string""" logging.debug("add argument to process: %s -> %s", self._args[0], arg) - self._args.append(arg) + self._args.append(arg.split()) def clearArguments(self): """!clear all arguments""" @@ -48,25 +45,24 @@ class ProcessManager: def start(self): """!start the new process""" - logging.debug("start new process: %s", self._args[0]) - self._processHandle = subprocess.Popen(self._args, - stdin=self._stdin, - stdout=self._stdout, - stderr=self._stderr, - universal_newlines=self._textMode) + logging.debug("start new process: %s", self._args) + try: + self._processHandle = subprocess.Popen(self._args, + stdin=self._stdin, + stdout=self._stdout, + stderr=self._stderr, + universal_newlines=self._textMode) + except FileNotFoundError: + logging.error("File not found: %s", self._args[0]) def stop(self): - """!Stop the process by sending SIGTERM and wait for ending - - @return return code of process""" + """!Stop the process by sending SIGTERM and wait for ending""" if self._processHandle and self.isRunning: logging.debug("stopping process: %s", self._args[0]) self._processHandle.terminate() while self.isRunning: pass - return self._processHandle.returnCode - logging.debug("process not running: %s", self._args[0]) - return 0 + logging.debug("cannot stop - process not running: %s", self._args[0]) def readline(self): """!Read one line from stdout stream @@ -112,4 +108,4 @@ class ProcessManager: if self._processHandle.poll() is None: return True return False - \ No newline at end of file + diff --git a/bw_client.py b/bw_client.py index 83d7b38..c867744 100644 --- a/bw_client.py +++ b/bw_client.py @@ -32,8 +32,6 @@ logging.debug("BOSWatch client has started ...") logging.debug("Import python modules") import argparse logging.debug("- argparse") -import subprocess -logging.debug("- subprocess") import time logging.debug("- time") @@ -43,11 +41,31 @@ from boswatch.network.client import TCPClient from boswatch.network.broadcast import BroadcastClient from boswatch.decoder.decoder import Decoder from boswatch.utils import header +from boswatch.processManager import ProcessManager header.logoToLog() header.infoToLog() +# multimon = ProcessManager("_bin/win/multimon/multimon-ng.exe", True) +# multimon.addArgument("-a POCSAG1200") +# multimon.addArgument("-t raw") +# multimon.addArgument("-v 3") +# multimon.addArgument("poc1200.raw") +# +# multimon.setStderr(None) +# multimon.start() +# +# logging.debug("go") +# +# while multimon.isRunning: +# data = multimon.readline() +# if data is not None: +# print(data) +# +# +# exit() + logging.debug("parse args") # With -h or --help you get the Args help parser = argparse.ArgumentParser(prog="bw_client.py",