Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pythondaemon [2014/10/26 01:52] (current)
Line 1: Line 1:
 +==== Daemon example ====
 +<code lang='​python'>​
 +import sys, os 
  
 +def main():
 +    """​ A demo daemon main routine, write a datestamp to 
 +        /​tmp/​daemon-log every 10 seconds.
 +    """​
 +    import time
 +
 +    f = open("/​tmp/​daemon-log",​ "​w"​) ​
 +    while 1: 
 +        f.write('​%s\n'​ % time.ctime(time.time())) ​
 +        f.flush() ​
 +        time.sleep(10) ​
 +
 +
 +if __name__ == "​__main__":​
 +    # do the UNIX double-fork magic, see Stevens'​ "​Advanced ​
 +    # Programming in the UNIX Environment"​ for details (ISBN 0201563177)
 +    try: 
 +        pid = os.fork() ​
 +        if pid > 0:
 +            # exit first parent
 +            sys.exit(0) ​
 +    except OSError, e: 
 +        print >>​sys.stderr,​ "fork #1 failed: %d (%s)" % (e.errno, e.strerror) ​
 +        sys.exit(1)
 +
 +    # decouple from parent environment
 +    os.chdir("/"​) ​
 +    os.setsid() ​
 +    os.umask(0) ​
 +
 +    # do second fork
 +    try: 
 +        pid = os.fork() ​
 +        if pid > 0:
 +            # exit from second parent, print eventual PID before
 +            print "​Daemon PID %d" % pid 
 +            sys.exit(0) ​
 +    except OSError, e: 
 +        print >>​sys.stderr,​ "fork #2 failed: %d (%s)" % (e.errno, e.strerror) ​
 +        sys.exit(1) ​
 +
 +    # start the daemon main loop
 +    main() ​
 +
 +</​code>​
 +----
 +  * [[pythoninfo|Back to Python]]
pythondaemon.txt ยท Last modified: 2014/10/26 01:52 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0