aboutsummaryrefslogtreecommitdiff
path: root/rpki/daemonize.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2015-10-26 06:29:00 +0000
committerRob Austein <sra@hactrn.net>2015-10-26 06:29:00 +0000
commitb46deb1417dc3596e9ac9fe2fe8cc0b7f42457e7 (patch)
treeca0dc0276d1adc168bc3337ce0564c4ec4957c1b /rpki/daemonize.py
parent397beaf6d9900dc3b3cb612c89ebf1d57b1d16f6 (diff)
"Any programmer who fails to comply with the standard naming, formatting,
or commenting conventions should be shot. If it so happens that it is inconvenient to shoot him, then he is to be politely requested to recode his program in adherence to the above standard." -- Michael Spier, Digital Equipment Corporation svn path=/branches/tk705/; revision=6152
Diffstat (limited to 'rpki/daemonize.py')
-rw-r--r--rpki/daemonize.py88
1 files changed, 44 insertions, 44 deletions
diff --git a/rpki/daemonize.py b/rpki/daemonize.py
index 6a825566..bd59fca0 100644
--- a/rpki/daemonize.py
+++ b/rpki/daemonize.py
@@ -80,56 +80,56 @@ default_pid_directory = "/var/run/rpki"
pid_filename = None
def daemon(nochdir = False, noclose = False, pidfile = None):
- """
- Make this program become a daemon, like 4.4BSD daemon(3), and
- write its pid out to a file with cleanup on exit.
- """
-
- if pidfile is None:
- if pid_filename is None:
- prog = os.path.splitext(os.path.basename(sys.argv[0]))[0]
- pidfile = os.path.join(default_pid_directory, "%s.pid" % prog)
+ """
+ Make this program become a daemon, like 4.4BSD daemon(3), and
+ write its pid out to a file with cleanup on exit.
+ """
+
+ if pidfile is None:
+ if pid_filename is None:
+ prog = os.path.splitext(os.path.basename(sys.argv[0]))[0]
+ pidfile = os.path.join(default_pid_directory, "%s.pid" % prog)
+ else:
+ pidfile = pid_filename
+
+ old_sighup_action = signal.signal(signal.SIGHUP, signal.SIG_IGN)
+
+ try:
+ pid = os.fork()
+ except OSError, e:
+ sys.exit("fork() failed: %d (%s)" % (e.errno, e.strerror))
else:
- pidfile = pid_filename
+ if pid > 0:
+ os._exit(0)
- old_sighup_action = signal.signal(signal.SIGHUP, signal.SIG_IGN)
+ if not nochdir:
+ os.chdir("/")
- try:
- pid = os.fork()
- except OSError, e:
- sys.exit("fork() failed: %d (%s)" % (e.errno, e.strerror))
- else:
- if pid > 0:
- os._exit(0)
+ os.setsid()
- if not nochdir:
- os.chdir("/")
+ if not noclose:
+ sys.stdout.flush()
+ sys.stderr.flush()
+ fd = os.open(os.devnull, os.O_RDWR)
+ os.dup2(fd, 0)
+ os.dup2(fd, 1)
+ os.dup2(fd, 2)
+ if fd > 2:
+ os.close(fd)
- os.setsid()
+ signal.signal(signal.SIGHUP, old_sighup_action)
- if not noclose:
- sys.stdout.flush()
- sys.stderr.flush()
- fd = os.open(os.devnull, os.O_RDWR)
- os.dup2(fd, 0)
- os.dup2(fd, 1)
- os.dup2(fd, 2)
- if fd > 2:
- os.close(fd)
+ def delete_pid_file():
+ try:
+ os.unlink(pidfile)
+ except OSError:
+ pass
- signal.signal(signal.SIGHUP, old_sighup_action)
+ atexit.register(delete_pid_file)
- def delete_pid_file():
try:
- os.unlink(pidfile)
- except OSError:
- pass
-
- atexit.register(delete_pid_file)
-
- try:
- f = open(pidfile, "w")
- f.write("%d\n" % os.getpid())
- f.close()
- except IOError, e:
- logger.warning("Couldn't write PID file %s: %s", pidfile, e.strerror)
+ f = open(pidfile, "w")
+ f.write("%d\n" % os.getpid())
+ f.close()
+ except IOError, e:
+ logger.warning("Couldn't write PID file %s: %s", pidfile, e.strerror)