X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=inline;f=bin%2Fbtr-setsid.c;fp=bin%2Fbtr-setsid.c;h=f293efa51f7493732a74bcfabdbe39a327dffc61;hb=6a0d154a9ccfb0e2d2470dfdca06621e864895b3;hp=0000000000000000000000000000000000000000;hpb=c77cf9871e61151a16185d16abdaeb107279cd6a;p=m6w6%2Fbtr diff --git a/bin/btr-setsid.c b/bin/btr-setsid.c new file mode 100644 index 0000000..f293efa --- /dev/null +++ b/bin/btr-setsid.c @@ -0,0 +1,34 @@ +#include +#include +#include + +int main(int argc, char *argv[]) +{ + if (argc < 2) { + fprintf(stderr, "Usage: %s [args...]\n", argv[0]); + return EXIT_FAILURE; + } + + if (getpid() == getpgrp()) { + pid_t pid = fork(); + + switch (pid) { + case 0: + break; + case -1: + perror("fork"); + return EXIT_FAILURE; + default: + return EXIT_SUCCESS; + } + } + + if (setsid() < 0) { + perror("setsid"); + return EXIT_FAILURE; + } + + execvp(argv[1], &argv[1]); + perror("exec"); + return EXIT_FAILURE; +}