summaryrefslogtreecommitdiff
path: root/util/ec3po/interpreter.py
diff options
context:
space:
mode:
Diffstat (limited to 'util/ec3po/interpreter.py')
-rw-r--r--util/ec3po/interpreter.py9
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.