diff options
author | peter <peter@FreeBSD.org> | 2001-03-07 10:38:46 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 2001-03-07 10:38:46 +0000 |
commit | ac3628fd7e8a631e8f288668c4b6c54d801b6d2e (patch) | |
tree | b1d6d3bdce9110e51cdae16af4c6678def8ae0de /usr.sbin/cron | |
parent | 576f1851f180030d11cae82cc49d0bbaf8aabfd7 (diff) | |
download | FreeBSD-src-ac3628fd7e8a631e8f288668c4b6c54d801b6d2e.zip FreeBSD-src-ac3628fd7e8a631e8f288668c4b6c54d801b6d2e.tar.gz |
Properly detach at startup. We could be passing revoked fd's to
child processes or starting children with no fd 0 (stdin) at all etc.
This is currently breaking on hub.freebsd.org.
Diffstat (limited to 'usr.sbin/cron')
-rw-r--r-- | usr.sbin/cron/cron/cron.c | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/usr.sbin/cron/cron/cron.c b/usr.sbin/cron/cron/cron.c index e8f8557..8889b72 100644 --- a/usr.sbin/cron/cron/cron.c +++ b/usr.sbin/cron/cron/cron.c @@ -100,19 +100,9 @@ main(argc, argv) # endif (void) fprintf(stderr, "[%d] cron started\n", getpid()); } else { - switch (fork()) { - case -1: - log_it("CRON",getpid(),"DEATH","can't fork"); + if (daemon(1, 0) == -1) { + log_it("CRON",getpid(),"DEATH","can't become daemon"); 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); } } |