import repository from arizona
[raven.git] / apps / servicemonitor / sample / sample.py
1 import sys,os,signal,time,subprocess,urllib2,socket,urllib,ConfigParser
2 import time
3
4 # Adapted from arizonageneral
5
6 def make_daemon(program):
7    global loggingfd
8    print "forking daemon"
9    pid = os.fork()
10
11    # if fork was successful, exit the parent process so it returns
12    try:
13       if pid > 0:
14          os._exit(0)
15    except OSError:
16         print "fork failed"
17         exit(1)
18
19    # Print my pid into /var/run/PROGRAM.pid
20    pid = str(os.getpid())
21    filename = "/var/run/%s.pid" % program
22    try:
23       out_file = open(filename, "w")
24       out_file.write(pid)
25       out_file.close()
26    except IOError:
27        error("error writing %s" % filename)
28        exit(1)
29
30    # close any open files
31    sys.stdin.close()
32    sys.stdout.close()
33    sys.stderr.close()
34    for fd in xrange(0,1023):
35            try:
36                os.close(fd)
37            except OSError:
38                pass
39
40    # redirect stdin/out/err to /dev/null
41    sys.stdin = open('/dev/null')       # fd 0
42    sys.stdout = open('/dev/null', 'w') # fd 1
43    sys.stderr = open('/dev/null', 'w') # fd 2
44
45    # disassociate from parent
46    os.chdir("/")
47    os.setsid()
48    os.umask(0)
49
50    return pid
51
52 def main():
53    make_daemon("sample")
54    while 1:
55        time.sleep(1)
56
57
58 if __name__=="__main__":
59    main()
60
61