diff options
Diffstat (limited to 'scripts/swabber-strace-attach')
-rwxr-xr-x | scripts/swabber-strace-attach | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/scripts/swabber-strace-attach b/scripts/swabber-strace-attach new file mode 100755 index 0000000..bb0391a --- /dev/null +++ b/scripts/swabber-strace-attach @@ -0,0 +1,31 @@ +#!/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) + |