diff options
Diffstat (limited to 'util/ec3po/interpreter.py')
-rw-r--r-- | util/ec3po/interpreter.py | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/util/ec3po/interpreter.py b/util/ec3po/interpreter.py index 9a0880f49c..6de8ff7a43 100644 --- a/util/ec3po/interpreter.py +++ b/util/ec3po/interpreter.py @@ -374,7 +374,7 @@ def Crc8(data): return crc >> 8 -def StartLoop(interp): +def StartLoop(interp, ppid = os.getppid()): """Starts an infinite loop of servicing the user and the EC. StartLoop checks to see if there are any commands to process, processing them @@ -389,10 +389,13 @@ def StartLoop(interp): Args: interp: An Interpreter object that has been properly initialised. + ppid: original parent pid to stop loop when parent dies. """ try: - while True: - readable, writeable, _ = select.select(interp.inputs, interp.outputs, []) + while os.getppid() == ppid: + # Timeout every 100ms to catch if the parent has died. + readable, writeable, _ = select.select(interp.inputs, interp.outputs, [], + 0.1) for obj in readable: # Handle any debug prints from the EC. |