Created
August 19, 2014 03:18
-
-
Save binzeehale/3d18696c96cb3a209e9b to your computer and use it in GitHub Desktop.
run_as_daemon
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def run_as_daemon(stdin = '/dev/null',stdout='/dev/null', stderr = '/dev/null'): | |
''' | |
@brief 以daemon的方式运行程序 | |
@details 以daemon的方式运行程序 | |
@param stdin (string) 重定向标准输入 | |
@param stdout (string) 重定向标准输出 | |
@param stderr (string) 重定向错误输出 | |
''' | |
try: | |
pid = os.fork() | |
signal.signal(signal.SIGHUP,signal.SIG_IGN) | |
if pid > 0: | |
sys.exit(0) | |
except OSError, err: | |
sys.stderr.write('fork #1 failed:(%d) %s\n' %(err.errno,err.strerror)) | |
sys.exit(1) | |
os.chdir('/') | |
os.umask(0) | |
os.setsid() | |
try: | |
pid = os.fork() | |
if pid > 0: | |
sys.exit(0) | |
except OSError, err: | |
sys.stderr.write('fork #2 failed:(%d) %s\n' % (err.errno, err.strerror)) | |
sys.exit(1) | |
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()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment