|  | #include <signal.h> | 
|  | #include <stdio.h> | 
|  | #include <stdlib.h> | 
|  | #include <unistd.h> | 
|  |  | 
|  | int nohup_main(int argc, char *argv[]) | 
|  | { | 
|  | if (argc < 2) { | 
|  | fprintf(stderr, "Usage: %s [-n] program args...\n", argv[0]); | 
|  | return EXIT_FAILURE; | 
|  | } | 
|  | signal(SIGHUP, SIG_IGN); | 
|  | argv++; | 
|  | if (strcmp(argv[0], "-n") == 0) { | 
|  | argv++; | 
|  | signal(SIGINT, SIG_IGN); | 
|  | signal(SIGSTOP, SIG_IGN); | 
|  | signal(SIGTTIN, SIG_IGN); | 
|  | signal(SIGTTOU, SIG_IGN); | 
|  | signal(SIGQUIT, SIG_IGN); | 
|  | signal(SIGTERM, SIG_IGN); | 
|  | } | 
|  | execvp(argv[0], argv); | 
|  | perror(argv[0]); | 
|  | return EXIT_FAILURE; | 
|  | } |