#!/usr/bin/env python | |
import os | |
import sys | |
import subprocess | |
# Detach from the controlling terminal and parent process by forking twice to daemonize ourselves, | |
# then run the command passed as argv[1]. Send log data to argv[2]. | |
pid = os.fork() | |
if (pid == 0): | |
os.setsid() | |
pid = os.fork() | |
if (pid != 0): | |
os._exit(0) | |
else: | |
sys.exit() | |
si = file(os.devnull, 'r') | |
so = file(sys.argv[2], 'w') | |
se = so | |
# Replace those fds with our own | |
os.dup2(si.fileno(), sys.stdin.fileno()) | |
os.dup2(so.fileno(), sys.stdout.fileno()) | |
os.dup2(se.fileno(), sys.stderr.fileno()) | |
ret = subprocess.call(sys.argv[1], shell=True) | |
os._exit(ret) | |