OSX compatibility
[m6w6/btr] / bin / btr-setsid.c
1 #include <unistd.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4
5 int main(int argc, char *argv[])
6 {
7 if (argc < 2) {
8 fprintf(stderr, "Usage: %s <program> [args...]\n", argv[0]);
9 return EXIT_FAILURE;
10 }
11
12 if (getpid() == getpgrp()) {
13 pid_t pid = fork();
14
15 switch (pid) {
16 case 0:
17 break;
18 case -1:
19 perror("fork");
20 return EXIT_FAILURE;
21 default:
22 return EXIT_SUCCESS;
23 }
24 }
25
26 if (setsid() < 0) {
27 perror("setsid");
28 return EXIT_FAILURE;
29 }
30
31 execvp(argv[1], &argv[1]);
32 perror("exec");
33 return EXIT_FAILURE;
34 }