aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/cron
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>2001-03-07 10:38:46 +0000
committerPeter Wemm <peter@FreeBSD.org>2001-03-07 10:38:46 +0000
commit1db78faf47eb89556de40d4f4f83e05f224c0533 (patch)
tree0ac4c8ca6bf527e87faa9165cb075572d627d287 /usr.sbin/cron
parent06a9cc5bf7b52ffff4bc9af96d2edd081dc1aa42 (diff)
downloadsrc-1db78faf47eb89556de40d4f4f83e05f224c0533.tar.gz
src-1db78faf47eb89556de40d4f4f83e05f224c0533.zip
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.
Notes
Notes: svn path=/head/; revision=73955
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 e8f8557609d1..8889b722d83c 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);
}
}