diff options
Diffstat (limited to 'util/ec3po/console.py')
-rwxr-xr-x | util/ec3po/console.py | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/util/ec3po/console.py b/util/ec3po/console.py index 608e1b7cba..0b2b586252 100755 --- a/util/ec3po/console.py +++ b/util/ec3po/console.py @@ -817,13 +817,14 @@ def IsPrintable(byte): """ return byte >= ord(' ') and byte <= ord('~') -def StartLoop(console, command_active): +def StartLoop(console, command_active, ppid = os.getppid()): """Starts the infinite loop of console processing. Args: console: A Console object that has been properly initialzed. command_active: multiprocessing.Value indicating if servod owns the console, or user owns the console. This prevents input collisions. + ppid: original parent pid to stop loop when parent dies. """ console.logger.debug('Console is being served on %s.', console.user_pty) console.logger.debug('Console master is on %s.', console.master_pty) @@ -836,7 +837,7 @@ def StartLoop(console, command_active): ep = select.epoll() ep.register(console.master_pty, select.EPOLLHUP) - while True: + while os.getppid() == ppid: # Check to see if pts is connected to anything events = ep.poll(0) master_connected = not events @@ -980,7 +981,7 @@ def main(argv): # Spawn an interpreter process. itpr_process = multiprocessing.Process(target=interpreter.StartLoop, - args=(itpr,)) + args=(itpr,os.getpid())) # Make sure to kill the interpreter when we terminate. itpr_process.daemon = True # Start the interpreter. |