From d86a5a1e91856bad832a8219a11a1d2918013a9a Mon Sep 17 00:00:00 2001 From: Jan Harkes Date: Mon, 23 May 2016 23:00:46 -0400 Subject: [PATCH] Don't even bother trying to kill stray child processes. When we change our process group id we don't get keyboard interrupt signals passed if our parent is a bash script. --- homeassistant/__main__.py | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/homeassistant/__main__.py b/homeassistant/__main__.py index ab83d2aa09ad07..5dd43e0508a777 100644 --- a/homeassistant/__main__.py +++ b/homeassistant/__main__.py @@ -4,7 +4,6 @@ import argparse import os import platform -import signal import subprocess import sys import threading @@ -334,29 +333,6 @@ def try_to_restart(): except AssertionError: sys.stderr.write("Failed to count non-daemonic threads.\n") - # Send terminate signal to all processes in our process group which - # should be any children that have not themselves changed the process - # group id. Don't bother if couldn't even call setpgid. - if hasattr(os, 'setpgid'): - sys.stderr.write("Signalling child processes to terminate...\n") - os.kill(0, signal.SIGTERM) - - # wait for child processes to terminate - try: - while True: - time.sleep(1) - if os.waitpid(0, os.WNOHANG) == (0, 0): - break - except OSError: - pass - - elif os.name == 'nt': - # Maybe one of the following will work, but how do we indicate which - # processes are our children if there is no process group? - # os.kill(0, signal.CTRL_C_EVENT) - # os.kill(0, signal.CTRL_BREAK_EVENT) - pass - # Try to not leave behind open filedescriptors with the emphasis on try. try: max_fd = os.sysconf("SC_OPEN_MAX") @@ -408,13 +384,6 @@ def main(): if args.pid_file: write_pid(args.pid_file) - # Create new process group if we can - if hasattr(os, 'setpgid'): - try: - os.setpgid(0, 0) - except PermissionError: - pass - exit_code = setup_and_run_hass(config_dir, args) if exit_code == RESTART_EXIT_CODE and not args.runner: try_to_restart()