diff --git a/selfdrive/pandad/pandad.py b/selfdrive/pandad/pandad.py index aebd00cc18..a202ca85cb 100755 --- a/selfdrive/pandad/pandad.py +++ b/selfdrive/pandad/pandad.py @@ -5,7 +5,6 @@ import usb1 import time import signal import subprocess -import sys from typing import NoReturn from panda import Panda, PandaDFU, PandaProtocolMismatch, FW_PATH @@ -65,17 +64,12 @@ def flash_panda(panda_serial: str) -> Panda: def main() -> NoReturn: # override manager's immediate SystemExit to allow pandad to exit gracefully - do_exit = False - def signal_handler(signum, frame): - nonlocal do_exit, process + nonlocal do_exit do_exit = True cloudlog.warning(f"caught signal {signum}, exiting") - if process is not None: - process.terminate() - - sys.exit(0) + do_exit = False signal.signal(signal.SIGTERM, signal_handler) count = 0 @@ -176,8 +170,7 @@ def main() -> NoReturn: # run pandad with all connected serials as arguments os.environ['MANAGER_DAEMON'] = 'pandad' os.chdir(os.path.join(BASEDIR, "selfdrive/pandad")) - process = subprocess.Popen(["./pandad", *panda_serials]) - process.wait() + subprocess.run(["./pandad", *panda_serials], check=True) if __name__ == "__main__": main()