Ooops, Missed stuff:
>
> Daemon, double fork magic in Python:
>
> from socket import *
> from time import time, ctime, sleep
> from threading import Lock, Thread, Event
> import os, sys, asyncore, getopt
class TaskThread(Thread):
"""Thread that executes a task every N seconds"""
# Stuff goes here
class Listener(asyncore.dispatcher):
# More Stuff Here
# Helpful comment
>
>
> def main():
> hostname = 'foobar'
>
> SERVERIP = gethostbyname( hostname )
> HBPORT = 1667
> LISTEN_PORT = 2667
> BEATWAIT = 10
>
> hbThread = TaskThread (SERVERIP, HBPORT)
> hbThread.start ()
>
> print "Listening ..."
> listenServer = Listener(LISTEN_PORT)
> while 1:
> asyncore.poll()
> sleep(0.1)
>
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 "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 "fork #2 failed: %d (%s)" % (e.errno, e.strerror)
> sys.exit(1)
>
> # start the daemon main loop
> main()
>
--
----------------------------------------------------------------------
Mark A. Bolstad [EMAIL PROTECTED]
Raytheon Systems Company (410)278-9149
Scientific Visualization Specialist
U.S. Army Research Laboratory - HPC Major Shared Resource Center
----------------------------------------------------------------------