From c6c05098360c32dca82621cc4aaf91064f81e3f3 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Fri, 24 Oct 2014 17:19:55 +1300 Subject: Strictly separate argument parsing from main loops --- libpathod/utils.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'libpathod/utils.py') diff --git a/libpathod/utils.py b/libpathod/utils.py index 110a7170..be49daec 100644 --- a/libpathod/utils.py +++ b/libpathod/utils.py @@ -110,3 +110,30 @@ class Data: data = Data(__name__) + +def daemonize(stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'): + try: + pid = os.fork() + if pid > 0: + sys.exit(0) + except OSError, e: + sys.stderr.write("fork #1 failed: (%d) %s\n" % (e.errno, e.strerror)) + sys.exit(1) + os.chdir("/") + os.umask(0) + os.setsid() + try: + pid = os.fork() + if pid > 0: + sys.exit(0) + except OSError, e: + sys.stderr.write("fork #2 failed: (%d) %s\n" % (e.errno, e.strerror)) + sys.exit(1) + si = open(stdin, 'rb') + so = open(stdout, 'a+b') + se = open(stderr, 'a+b', 0) + os.dup2(si.fileno(), sys.stdin.fileno()) + os.dup2(so.fileno(), sys.stdout.fileno()) + os.dup2(se.fileno(), sys.stderr.fileno()) + + -- cgit v1.2.3 From 3de68da3adf15f445e40412fdde4b94857640166 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Fri, 24 Oct 2014 17:21:28 +1300 Subject: Add forgotten import. Oops. --- libpathod/utils.py | 1 + 1 file changed, 1 insertion(+) (limited to 'libpathod/utils.py') diff --git a/libpathod/utils.py b/libpathod/utils.py index be49daec..d4160a23 100644 --- a/libpathod/utils.py +++ b/libpathod/utils.py @@ -1,4 +1,5 @@ import os +import sys from netlib import tcp SSLVERSIONS = { -- cgit v1.2.3