Use daemon() to spawn syslogd and klogd daemons.

-Erik
This commit is contained in:
Eric Andersen 2001-03-29 21:58:33 +00:00
parent 3a6da8c183
commit e5c24dfd01
4 changed files with 16 additions and 70 deletions

21
klogd.c
View File

@ -124,18 +124,10 @@ static void doKlogd (void)
} }
} }
static void daemon_init (char **argv, char *dz, void fn (void))
{
setsid(); /* start a new session? */
strncpy(argv[0], dz, strlen(argv[0]));
fn();
exit(0);
}
extern int klogd_main(int argc, char **argv) extern int klogd_main(int argc, char **argv)
{ {
/* no options, no getopt */ /* no options, no getopt */
int opt, pid; int opt;
int doFork = TRUE; int doFork = TRUE;
/* do normal option parsing */ /* do normal option parsing */
@ -150,15 +142,10 @@ extern int klogd_main(int argc, char **argv)
} }
if (doFork == TRUE) { if (doFork == TRUE) {
pid = fork(); if (daemon(0, 1) < 0)
if (pid < 0) perror_msg_and_die("daemon");
exit(pid);
else if (pid == 0) {
daemon_init (argv, "klogd", doKlogd);
}
} else {
doKlogd();
} }
doKlogd();
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }

View File

@ -124,18 +124,10 @@ static void doKlogd (void)
} }
} }
static void daemon_init (char **argv, char *dz, void fn (void))
{
setsid(); /* start a new session? */
strncpy(argv[0], dz, strlen(argv[0]));
fn();
exit(0);
}
extern int klogd_main(int argc, char **argv) extern int klogd_main(int argc, char **argv)
{ {
/* no options, no getopt */ /* no options, no getopt */
int opt, pid; int opt;
int doFork = TRUE; int doFork = TRUE;
/* do normal option parsing */ /* do normal option parsing */
@ -150,15 +142,10 @@ extern int klogd_main(int argc, char **argv)
} }
if (doFork == TRUE) { if (doFork == TRUE) {
pid = fork(); if (daemon(0, 1) < 0)
if (pid < 0) perror_msg_and_die("daemon");
exit(pid);
else if (pid == 0) {
daemon_init (argv, "klogd", doKlogd);
}
} else {
doKlogd();
} }
doKlogd();
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }

View File

@ -562,18 +562,9 @@ static void doSyslogd (void)
} /* for main loop */ } /* for main loop */
} }
static void daemon_init (char **argv, char *dz, void fn (void))
{
setsid();
chdir ("/");
strncpy(argv[0], dz, strlen(argv[0]));
fn();
exit(0);
}
extern int syslogd_main(int argc, char **argv) extern int syslogd_main(int argc, char **argv)
{ {
int opt, pid; int opt;
int doFork = TRUE; int doFork = TRUE;
char *p; char *p;
@ -635,15 +626,10 @@ extern int syslogd_main(int argc, char **argv)
#endif #endif
if (doFork == TRUE) { if (doFork == TRUE) {
pid = fork(); if (daemon(0, 1) < 0)
if (pid < 0) perror_msg_and_die("daemon");
exit(pid);
else if (pid == 0) {
daemon_init (argv, "syslogd", doSyslogd);
}
} else {
doSyslogd();
} }
doSyslogd();
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }

View File

@ -562,18 +562,9 @@ static void doSyslogd (void)
} /* for main loop */ } /* for main loop */
} }
static void daemon_init (char **argv, char *dz, void fn (void))
{
setsid();
chdir ("/");
strncpy(argv[0], dz, strlen(argv[0]));
fn();
exit(0);
}
extern int syslogd_main(int argc, char **argv) extern int syslogd_main(int argc, char **argv)
{ {
int opt, pid; int opt;
int doFork = TRUE; int doFork = TRUE;
char *p; char *p;
@ -635,15 +626,10 @@ extern int syslogd_main(int argc, char **argv)
#endif #endif
if (doFork == TRUE) { if (doFork == TRUE) {
pid = fork(); if (daemon(0, 1) < 0)
if (pid < 0) perror_msg_and_die("daemon");
exit(pid);
else if (pid == 0) {
daemon_init (argv, "syslogd", doSyslogd);
}
} else {
doSyslogd();
} }
doSyslogd();
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }