diff --git a/nemubot/__init__.py b/nemubot/__init__.py index 82be366..4b14c07 100644 --- a/nemubot/__init__.py +++ b/nemubot/__init__.py @@ -106,13 +106,25 @@ def attach(pid, socketfile): return 0 -def daemonize(): +def daemonize(socketfile=None): """Detach the running process to run as a daemon """ import os import sys + if socketfile is not None: + try: + pid = os.fork() + if pid > 0: + import time + os.waitpid(pid, 0) + time.sleep(1) + sys.exit(attach(pid, socketfile)) + except OSError as err: + sys.stderr.write("Unable to fork: %s\n" % err) + sys.exit(1) + try: pid = os.fork() if pid > 0: diff --git a/nemubot/__main__.py b/nemubot/__main__.py index 9dea209..fa9d3ba 100644 --- a/nemubot/__main__.py +++ b/nemubot/__main__.py @@ -148,7 +148,7 @@ def main(): # Daemonize if not args.debug: from nemubot import daemonize - daemonize() + daemonize(args.socketfile) # Signals handling def sigtermhandler(signum, frame):