import os
import sys
def daemonize(stdin="/dev/null", stdout="/dev/null", stderr="/dev/null"):
try:
pid = os.fork();
if pid > 0:
sys.exit(); #exit the first parent
except OSError, e:
sys.exit(1);
os.umask(0022);
os.setsid();
try:
pid = os.fork();
if pid > 0:
sys.exit(0);#exit the 2nd parent
except OSError, e:
sys.exit(1);
si = open(stdin, 'r');
so = open(stdout, 'a+');
se = open(stderr, 'a+', 0);
os.dup2(si.fileno(), sys.stdin.fileno());
os.dup2(so.fileno(), sys.stdout.fileno());
os.dup2(se.fileno(), sys.stderr.fileno());
记录一下以前不知道的知识:
1. os.umask(0022)