X-Git-Url: https://pwan.org/git/?p=certmaster.git;a=blobdiff_plain;f=certmaster%2Futils.py;h=ecebad65a42c9953ed14b9bcca0e067bca9f8819;hp=22b0afbdf7f580e438957b4f15f85c09702d3759;hb=ca0b109bfb78736cb3997b536ac20dadf32485bd;hpb=d7d7203553c024cbddd726d499eb351b460cb9f3 diff --git a/certmaster/utils.py b/certmaster/utils.py index 22b0afb..ecebad6 100755 --- a/certmaster/utils.py +++ b/certmaster/utils.py @@ -32,6 +32,14 @@ import sub_process # FIXME: can remove this constant? REMOTE_ERROR = "REMOTE_ERROR" +# The standard I/O file descriptors are redirected to /dev/null by default. +if (hasattr(os, "devnull")): + REDIRECT_TO = os.devnull +else: + REDIRECT_TO = "/dev/null" + + + def trace_me(): x = traceback.extract_stack() @@ -44,18 +52,26 @@ def daemonize(pidfile=None): Writes the new PID to the provided file name if not None. """ -# print pidfile pid = os.fork() if pid > 0: sys.exit(0) - os.close(0) - os.close(1) - os.close(2) - os.cwd("/") + os.chdir("/") os.setsid() os.umask(0) pid = os.fork() + os.close(0) + os.close(1) + os.close(2) + + # based on http://code.activestate.com/recipes/278731/ + os.open(REDIRECT_TO, os.O_RDWR) # standard input (0) + + os.dup2(0, 1) # standard output (1) + os.dup2(0, 2) # standard error (2) + + + if pid > 0: if pidfile is not None: open(pidfile, "w").write(str(pid)) @@ -116,7 +132,6 @@ def get_hostname(talk_to_certmaster=True): try: s = socket.socket() s.settimeout(5) - # print "server, port", server, port s.connect((server, port)) (intf, port) = s.getsockname() remote_hostname = socket.gethostbyaddr(intf)[0]