--- cron.c.orig 2003-10-15 15:42:57.000000000 +0900 +++ cron.c 2003-10-15 16:16:07.000000000 +0900 @@ -19,7 +19,6 @@ static char rcsid[] = "$Id: cron.c,v 2.11 1994/01/15 20:43:43 vixie Exp $"; #endif - #define MAIN_PROGRAM @@ -47,10 +46,11 @@ static void usage() { - fprintf(stderr, "usage: %s [-x debugflag[,...]]\n", ProgramName); + fprintf(stderr, "usage: %s -F [-x debugflag[,...]]\n", ProgramName); exit(ERROR_EXIT); } +int exec_fork = 1; int main(argc, argv) @@ -92,19 +92,23 @@ # endif (void) fprintf(stderr, "[%d] cron started\n", getpid()); } else { - switch (fork()) { - case -1: - log_it("CRON",getpid(),"DEATH","can't fork"); - exit(0); - break; - case 0: - /* child process */ - log_it("CRON",getpid(),"STARTUP","fork ok"); - (void) setsid(); - break; - default: - /* parent process should just die */ - _exit(0); + if (exec_fork == 1) { + switch (fork()) { + case -1: + log_it("CRON",getpid(),"DEATH","can't fork"); + exit(0); + break; + case 0: + /* child process */ + log_it("CRON",getpid(),"STARTUP","fork ok"); + (void) setsid(); + break; + default: + /* parent process should just die */ + _exit(0); + } + } else { + log_it("CRON",getpid(),"STARTUP","Don't fork mode"); } } @@ -310,10 +314,13 @@ { int argch; - while (EOF != (argch = getopt(argc, argv, "x:"))) { + while (EOF != (argch = getopt(argc, argv, "Fx:"))) { switch (argch) { default: usage(); + case 'F': + exec_fork = 0; + break; case 'x': if (!set_debug_flags(optarg)) usage();