diff --git a/misc/autocons.py b/misc/autocons.py index ebd13466..4b6555a0 100644 --- a/misc/autocons.py +++ b/misc/autocons.py @@ -1,7 +1,10 @@ import fcntl import os +import signal import struct +import subprocess import termios +import time addrtoname = { 0x3f8: '/dev/ttyS0', @@ -49,12 +52,39 @@ def do_serial_config(): termios.tcsetattr(ttyf, termios.TCSANOW, currattr) retval['connected'] = bool(struct.unpack(' {0} >&0 2>&1'.format(serialinfo['tty'])) + running = False + while True: + if running and running.poll() is not None: + running = False + if running and not is_connected(serialinfo['tty']): + try: + running.terminate() + running.wait() + except Exception: + pass + time.sleep(0.5) + running = subprocess.Popen(['/bin/sh', '-c', 'exec screen -x console <> {0} >&0 2>&1'.format(serialinfo['tty'])]) + time.sleep(0.5) + try: + running.terminate() + running.wait() + except Exception: + pass + running = False + elif not running and is_connected(serialinfo['tty']): + running = subprocess.Popen(['/bin/sh', '-c', 'exec screen -x console <> {0} >&0 2>&1'.format(serialinfo['tty'])]) + time.sleep(0.5)