diff options
Diffstat (limited to '__init__.py')
-rwxr-xr-x | __init__.py | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/__init__.py b/__init__.py index 8137683..752fd02 100755 --- a/__init__.py +++ b/__init__.py @@ -7,9 +7,26 @@ Licensed under the Eiffel Forum License 2. http://inamidst.com/phenny/ """ -import sys, time, threading +import sys, os, time, threading, signal import bot +class Watcher(object): + # Cf. http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/496735 + def __init__(self): + self.child = os.fork() + if self.child != 0: + self.watch() + + def watch(self): + try: os.wait() + except KeyboardInterrupt: + self.kill() + sys.exit() + + def kill(self): + try: os.kill(self.child, signal.SIGKILL) + except OSError: pass + def run_phenny(config): if hasattr(config, 'delay'): delay = config.delay @@ -19,6 +36,7 @@ def run_phenny(config): p = bot.Phenny(config) p.run(config.host) + Watcher() while True: connect(config) if not isinstance(delay, int): break |