26 from signal
import SIGTERM
36 def __init__(self, pidfile, stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'):
55 sys.stderr.write(
"fork #1 failed: %d (%s)\n" % (e.errno, e.strerror))
70 sys.stderr.write(
"fork #2 failed: %d (%s)\n" % (e.errno, e.strerror))
76 si = file(self.
stdin,
'r')
77 so = file(self.stdout, 'a+')
78 se = file(self.
stderr,
'a+', 0)
79 os.dup2(si.fileno(), sys.stdin.fileno())
80 os.dup2(so.fileno(), sys.stdout.fileno())
81 os.dup2(se.fileno(), sys.stderr.fileno())
84 atexit.register(self.
delpid)
85 pid = str(os.getpid())
86 file(self.
pidfile,
'w+').write(
"%s\n" % pid)
99 pid = int(pf.read().strip())
105 message =
"pidfile %s already exist. Daemon already running?\n"
106 sys.stderr.write(message % self.
pidfile)
121 pid = int(pf.read().strip())
127 message =
"pidfile %s does not exist. Daemon not running?\n"
128 sys.stderr.write(message % self.
pidfile)
134 os.kill(pid, SIGTERM)
138 if err.find(
"No such process") > 0:
139 if os.path.exists(self.
pidfile):