12345678910111213141516171819202122232425262728293031 |
- #!/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)
|