forked from LittlePeng/redis-monitor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdaemonized.py
61 lines (49 loc) · 1.54 KB
/
daemonized.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import os
import sys
class daemonized(object):
def __init__(self):
pass
def daemonize(self):
pass
try:
pid = os.fork()
if pid > 0:
sys.exit(0)
except OSError,e:
sys.stderr.write("Fork 1 has failed --> %d--[%s]\n" \
% (e.errno,e.strerror))
sys.exit(1)
#os.chdir('/')
#detach from terminal
os.setsid()
#file to be created?
os.umask(0)
try:
pid = os.fork()
if pid > 0:
print "Daemon process pid %d" % pid
sys.exit(0)
except OSError, e:
sys.stderr.write("Fork 2 has failed --> %d--[%s]" \
% (e.errno, e.strerror))
sys.exit(1)
sys.stdout.flush()
sys.stderr.flush()
if sys.platform != 'darwin': # This block breaks on OS X
# Redirect standard file descriptors
sys.stdout.flush()
sys.stderr.flush()
si = file( os.devnull, 'r')
so = file( os.devnull, 'a+')
se = file( os.devnull, 'a+', 0)
os.dup2(si.fileno(), sys.stdin.fileno())
os.dup2(so.fileno(), sys.stdout.fileno())
os.dup2(se.fileno(), sys.stderr.fileno())
def start_daemon(self):
self.daemonize()
self.run_daemon()
def start(self):
self.run_daemon()
def run_daemon(self):
'''override'''
pass