Skip to content

Commit

Permalink
Don't even bother trying to kill stray child processes.
Browse files Browse the repository at this point in the history
When we change our process group id we don't get keyboard interrupt
signals passed if our parent is a bash script.
  • Loading branch information
jaharkes committed May 24, 2016
1 parent 1327051 commit d86a5a1
Showing 1 changed file with 0 additions and 31 deletions.
31 changes: 0 additions & 31 deletions homeassistant/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import argparse
import os
import platform
import signal
import subprocess
import sys
import threading
Expand Down Expand Up @@ -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")
Expand Down Expand Up @@ -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()
Expand Down

0 comments on commit d86a5a1

Please sign in to comment.