/* * daemonize and exec */ #include #include #include #include #include #include "exec.c" int main(int ac, char *av[]) { pid_t child = 0; /* create the child */ child = fork(); if (child < 0) { fprintf(stderr, "fork fail!\n"); exit(EXIT_FAILURE); } /* parent, actually does the monitoring */ if (child > 0) { exit(EXIT_SUCCESS); } pid = fork(); if (pid < 0) { fprintf(stderr, "fork fail!\n"); exit(EXIT_FAILURE); } if (pid > 0) { /* fprintf(stderr, "pid = %d\n", pid); */ exit(EXIT_SUCCESS); } if (chdir("/") < 0) { exit(EXIT_FAILURE); } do_exec(1, ac, av); /* shouldn't get here... */ return EXIT_FAILURE; }