summaryrefslogtreecommitdiffstats
path: root/usr.sbin/cron
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2001-03-07 10:38:46 +0000
committerpeter <peter@FreeBSD.org>2001-03-07 10:38:46 +0000
commitac3628fd7e8a631e8f288668c4b6c54d801b6d2e (patch)
treeb1d6d3bdce9110e51cdae16af4c6678def8ae0de /usr.sbin/cron
parent576f1851f180030d11cae82cc49d0bbaf8aabfd7 (diff)
downloadFreeBSD-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.c14
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);
}
}
OpenPOWER on IntegriCloud