diff options
author | John Klug <john.klug@multitech.com> | 2022-05-25 17:12:18 -0500 |
---|---|---|
committer | John Klug <john.klug@multitech.com> | 2022-05-25 17:12:18 -0500 |
commit | 7971cb0aa3e517a53f0ce6d3ee9bc3179041ccb8 (patch) | |
tree | 56e91417e6f937b3956cadcf4973756cebb4a8b0 /scripts/swabber-strace-attach | |
download | mlinux-7971cb0aa3e517a53f0ce6d3ee9bc3179041ccb8.tar.gz mlinux-7971cb0aa3e517a53f0ce6d3ee9bc3179041ccb8.tar.bz2 mlinux-7971cb0aa3e517a53f0ce6d3ee9bc3179041ccb8.zip |
mLinux 6
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) + |