diff options
author | Maximilian Hils <git@maximilianhils.com> | 2014-11-11 12:29:34 +0100 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2014-11-11 12:29:34 +0100 |
commit | 8635e00175117d8574b4bea5edc1c43528ddf3e9 (patch) | |
tree | 1be23a6349a8fb81a89f8417b0b9d236d1829639 /libpathod/utils.py | |
parent | b917b61e6aead4f353ef15838315ecc0df721e29 (diff) | |
parent | 27c7e9e9345bbc458e7efc4093c2074e19011d12 (diff) | |
download | mitmproxy-8635e00175117d8574b4bea5edc1c43528ddf3e9.tar.gz mitmproxy-8635e00175117d8574b4bea5edc1c43528ddf3e9.tar.bz2 mitmproxy-8635e00175117d8574b4bea5edc1c43528ddf3e9.zip |
Merge remote-tracking branch 'origin/master'
Conflicts:
setup.py
Diffstat (limited to 'libpathod/utils.py')
-rw-r--r-- | libpathod/utils.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/libpathod/utils.py b/libpathod/utils.py index 110a7170..d4160a23 100644 --- a/libpathod/utils.py +++ b/libpathod/utils.py @@ -1,4 +1,5 @@ import os +import sys from netlib import tcp SSLVERSIONS = { @@ -110,3 +111,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()) + + |