@classmethod
    def executeWithOutput(cls, command, outputCallback=None):

        if outputCallback is not None and not callable(outputCallback):
            raise CommandError("Invalid param: outputCallback=%s must be a callable or None" % outputCallback)

        shlex.split(command)
        try:
            p = subprocess.Popen(command.split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False, bufsize=1)

            for line in iter(p.stdout.readline, b''):
                if callable(outputCallback):
                    outputCallback(line)
                else:
                    sys.stdout.write(line)

            (stdout, stderr) = p.communicate()
            return p.returncode

        except ValueError as e:
            raise CommandError("%s" % e)

        except OSError as e:
            raise CommandError("Error during process exec: %s" % e)

        except Exception as e:
            raise e
| Starts a subprocess with given command string. The subprocess is started without shell
dataset/ETHPy150Open mikrosimage/OpenRenderManagement/src/puliclient/runner.py/RunnerToolkit.executeWithOutput