Python のプロセスをデーモン化する
別に Python に限った話では無く、他のプログラム言語でも手順は同じです。
#-*- coding: utf-8 -*-
import os
import sys
def daemonize(target=None, args=(), kwargs={}):
# Quit Process Group Leader
try:
if os.fork() > 0:
sys.exit(0)
except OSError:
sys.exit(1)
# Create New Session
try:
os.setsid()
except:
sys.exit(1)
# Create Daemon Process
try:
if os.fork() > 0:
sys.exit(0)
except OSError:
sys.exit(1)
os.chdir('/')
os.umask(0)
sys.stdin = open('/dev/null', 'r')
sys.stdout = open('/dev/null', 'w')
sys.stderr = open('/dev/null', 'w')
target(*args, **kwargs)
def something():
# something
if __name__ == '__main__':
daemonize(target=something)