मुझे याद नहीं है कि मैंने इसे कहां डाउनलोड किया है ... लेकिन यह मुझे सबसे अच्छी डिमनीकरण स्क्रिप्ट है जो मैंने पाया है। यह (मैक और लिनक्स पर।) खूबसूरती से काम करता है (daemonize.py के रूप में सहेज)
import sys, os
def daemonize (stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'):
# Perform first fork.
try:
pid = os.fork()
if pid > 0:
sys.exit(0) # Exit first parent.
except OSError, e:
sys.stderr.write("fork #1 failed: (%d) %sn" % (e.errno, e.strerror))
sys.exit(1)
# Decouple from parent environment.
os.chdir("/")
os.umask(0)
os.setsid()
# Perform second fork.
try:
pid = os.fork()
if pid > 0:
sys.exit(0) # Exit second parent.
except OSError, e:
sys.stderr.write("fork #2 failed: (%d) %sn" % (e.errno, e.strerror))
sys.exit(1)
# The process is now daemonized, redirect standard file descriptors.
for f in sys.stdout, sys.stderr: f.flush()
si = file(stdin, 'r')
so = file(stdout, 'a+')
se = file(stderr, 'a+', 0)
os.dup2(si.fileno(), sys.stdin.fileno())
os.dup2(so.fileno(), sys.stdout.fileno())
os.dup2(se.fileno(), sys.stderr.fileno())
अपनी स्क्रिप्ट में, आप बस होगा:
from daemonize import daemonize
daemonize()
और तुम भी stdio रीडायरेक्ट करने के लिए स्थानों निर्दिष्ट कर सकते हैं , गलती, आदि ...
स्रोत
2009-02-26 18:29:22
यह SO प्रश्न भी देखें: http://stackoverflow.com/questions/473620/how-do-you-create-a-daemon-in-python – Rabarberski