3 def daemonize(logfile=None, errfile=None, pidfile=None):
4 devnull = os.devnull if hasattr(os, 'devnull') else '/dev/null'
9 if path.startswith('/'):
11 return os.path.join(initwd, path)
24 raise SystemError('Failed daemonization: %s' % str(e))
29 os.open(devnull, os.O_RDWR)
31 def open_trunc(fname):
32 f = os.open(fname, os.O_WRONLY | os.O_CREAT)
36 def open_or_dup(fname, fd=None):
38 return open_trunc(absolutize(fname))
42 open_or_dup(logfile, (0, 1))
43 open_or_dup(errfile, (1, 2))
47 pidfile = absolutize(pidfile)
48 fd = open_trunc(pidfile)
49 os.write(fd, str(pid))
54 sys.exitfunc = remove_pidfile
58 def set_user_and_group(user, group=None):
60 raise SystemError('I\'m not a root to pretend somebody else.')
67 userid = pwd.getpwnam(user)[2]
77 groupid = grp.getgrnam(group)[2]
80 groupid = pwd.getpwuid(userid)[3]