Use daemon() to spawn syslogd and klogd daemons.
-Erik
This commit is contained in:
parent
3a6da8c183
commit
e5c24dfd01
21
klogd.c
21
klogd.c
@ -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)
|
||||
{
|
||||
/* no options, no getopt */
|
||||
int opt, pid;
|
||||
int opt;
|
||||
int doFork = TRUE;
|
||||
|
||||
/* do normal option parsing */
|
||||
@ -150,15 +142,10 @@ extern int klogd_main(int argc, char **argv)
|
||||
}
|
||||
|
||||
if (doFork == TRUE) {
|
||||
pid = fork();
|
||||
if (pid < 0)
|
||||
exit(pid);
|
||||
else if (pid == 0) {
|
||||
daemon_init (argv, "klogd", doKlogd);
|
||||
}
|
||||
} else {
|
||||
doKlogd();
|
||||
if (daemon(0, 1) < 0)
|
||||
perror_msg_and_die("daemon");
|
||||
}
|
||||
doKlogd();
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
@ -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)
|
||||
{
|
||||
/* no options, no getopt */
|
||||
int opt, pid;
|
||||
int opt;
|
||||
int doFork = TRUE;
|
||||
|
||||
/* do normal option parsing */
|
||||
@ -150,15 +142,10 @@ extern int klogd_main(int argc, char **argv)
|
||||
}
|
||||
|
||||
if (doFork == TRUE) {
|
||||
pid = fork();
|
||||
if (pid < 0)
|
||||
exit(pid);
|
||||
else if (pid == 0) {
|
||||
daemon_init (argv, "klogd", doKlogd);
|
||||
}
|
||||
} else {
|
||||
doKlogd();
|
||||
if (daemon(0, 1) < 0)
|
||||
perror_msg_and_die("daemon");
|
||||
}
|
||||
doKlogd();
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
@ -562,18 +562,9 @@ static void doSyslogd (void)
|
||||
} /* 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)
|
||||
{
|
||||
int opt, pid;
|
||||
int opt;
|
||||
int doFork = TRUE;
|
||||
|
||||
char *p;
|
||||
@ -635,15 +626,10 @@ extern int syslogd_main(int argc, char **argv)
|
||||
#endif
|
||||
|
||||
if (doFork == TRUE) {
|
||||
pid = fork();
|
||||
if (pid < 0)
|
||||
exit(pid);
|
||||
else if (pid == 0) {
|
||||
daemon_init (argv, "syslogd", doSyslogd);
|
||||
}
|
||||
} else {
|
||||
doSyslogd();
|
||||
if (daemon(0, 1) < 0)
|
||||
perror_msg_and_die("daemon");
|
||||
}
|
||||
doSyslogd();
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
22
syslogd.c
22
syslogd.c
@ -562,18 +562,9 @@ static void doSyslogd (void)
|
||||
} /* 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)
|
||||
{
|
||||
int opt, pid;
|
||||
int opt;
|
||||
int doFork = TRUE;
|
||||
|
||||
char *p;
|
||||
@ -635,15 +626,10 @@ extern int syslogd_main(int argc, char **argv)
|
||||
#endif
|
||||
|
||||
if (doFork == TRUE) {
|
||||
pid = fork();
|
||||
if (pid < 0)
|
||||
exit(pid);
|
||||
else if (pid == 0) {
|
||||
daemon_init (argv, "syslogd", doSyslogd);
|
||||
}
|
||||
} else {
|
||||
doSyslogd();
|
||||
if (daemon(0, 1) < 0)
|
||||
perror_msg_and_die("daemon");
|
||||
}
|
||||
doSyslogd();
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user