import sys, os, time def main(): f = open("daemon.log", "w") # Вот с этим циклом беда while 1: f.write('%s\n' % time.ctime(time.time())) f.flush() #time.sleep(5) 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()
Мне в голову пришло только что где-то стоит ограничение на время выполнения кода, циклов… Но после того когда я убрал двойной fork то цикл заработал.