diff --git a/_demo_procMan.py b/_demo_procMan.py new file mode 100644 index 0000000..6896a05 --- /dev/null +++ b/_demo_procMan.py @@ -0,0 +1,63 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +""" + ____ ____ ______ __ __ __ _____ + / __ )/ __ \/ ___/ | / /___ _/ /______/ /_ |__ / + / __ / / / /\__ \| | /| / / __ `/ __/ ___/ __ \ /_ < + / /_/ / /_/ /___/ /| |/ |/ / /_/ / /_/ /__/ / / / ___/ / +/_____/\____//____/ |__/|__/\__,_/\__/\___/_/ /_/ /____/ + German BOS Information Script + by Bastian Schroll +""" + +from boswatch.processManager import ProcessManager +import logging.config +logging.config.fileConfig("config/logger_client.ini") + +dircmd = ProcessManager("dir", textMode=True) +dircmd.start(True) + +line = dircmd.readline() +while line is not None: + if line is not "": + print(line) + line = dircmd.readline() + +dircmd.stop() + +""" +19.09.2019 10:44:20,170 - processManager [DEBUG ] create process instance dir - textMode: True +19.09.2019 10:44:20,170 - processManager [DEBUG ] start new process: ['dir'] +19.09.2019 10:44:20,173 - processManager [DEBUG ] process started with PID 17616 +Datentr„ger in Laufwerk C: ist OS +Volumeseriennummer: ####-#### +Verzeichnis von C:\Git\BOSWatch-Core +19.09.2019 10:44 . +19.09.2019 10:44 .. +11.01.2018 11:24 .cache +19.09.2019 10:39 .git +08.03.2019 09:00 665 .gitignore +19.09.2019 10:44 .idea +19.09.2019 10:40 boswatch +11.03.2019 08:45 4.368 bw_client.py +11.03.2019 08:46 3.993 bw_server.py +11.03.2019 08:33 config +08.03.2019 09:00 35.147 LICENSE +19.09.2019 09:43 log +08.03.2019 09:00 logo +11.03.2019 08:33 module +11.03.2019 08:37 plugin +08.03.2019 09:00 521 README.md +19.09.2019 10:44 794 _demo_procMan.py +08.03.2019 09:00 test +08.03.2019 09:00 _bin +05.03.2019 09:46 _docu +11.03.2019 08:33 _gen +11.03.2019 08:33 _info +01.03.2019 13:19 __pycache__ +6 Datei(en), 45.488 Bytes +17 Verzeichnis(se), 317.487.964.160 Bytes frei +19.09.2019 10:44:20,182 - processManager [DEBUG ] stopping process: dir +19.09.2019 10:44:20,182 - processManager [DEBUG ] process not running: dir +19.09.2019 10:44:20,183 - processManager [DEBUG ] process dir returned 0 +""" diff --git a/boswatch/processManager.py b/boswatch/processManager.py index 6f6840d..bed5c08 100644 --- a/boswatch/processManager.py +++ b/boswatch/processManager.py @@ -44,20 +44,22 @@ class ProcessManager: """!clear all arguments""" self._args = self._args[0:1] # kept first element (process name) - def start(self): + def start(self, startAsShell=False): """!start the new process @return: True or False""" - logging.debug("start new process: %s", self._args) + logging.debug("start new process: %s %s", self._args[0], self._args[1:]) try: self._processHandle = subprocess.Popen(self._args, stdin=self._stdin, stdout=self._stdout, stderr=self._stderr, - universal_newlines=self._textMode) + universal_newlines=self._textMode, + shell=startAsShell) if not self.isRunning: logging.error("cannot start") return False + logging.debug("process started with PID %d", self._processHandle.pid) return True except FileNotFoundError: @@ -73,6 +75,7 @@ class ProcessManager: pass else: logging.debug("process not running: %s", self._args[0]) + logging.debug("process %s returned %d", self._args[0], self._processHandle.returncode) def readline(self): """!Read one line from stdout stream @@ -83,8 +86,8 @@ class ProcessManager: line = self._processHandle.stdout.readline().strip() except UnicodeDecodeError: return None - if line != "": - return line + + return line return None def setStdin(self, stdin): @@ -118,4 +121,3 @@ class ProcessManager: if self._processHandle.poll() is None: return True return False -