slcand: daemonise only once setup is complete

Delay the daemon() call until the interface has been configured. This
simplifies scripts that wish to use the new interface immediately.

Signed-off-by: Mans Rullgard <mans@mansr.com>
pull/81/head
Mans Rullgard 2018-04-20 13:46:15 +01:00
parent 01041fddd6
commit 33a9249571
1 changed files with 13 additions and 14 deletions

View File

@ -280,23 +280,9 @@ int main(int argc, char *argv[])
syslogger(LOG_INFO, "starting on TTY device %s", ttypath);
/* Daemonize */
if (run_as_daemon) {
if (daemon(0, 0)) {
syslogger(LOG_ERR, "failed to daemonize");
exit(EXIT_FAILURE);
}
}
else {
/* Trap signals that we expect to receive */
signal(SIGINT, child_handler);
signal(SIGTERM, child_handler);
}
/* */
slcand_running = 1;
/* Now we are a daemon -- do the work for which we were paid */
fd = open(ttypath, O_RDWR | O_NONBLOCK | O_NOCTTY);
if (fd < 0) {
syslogger(LOG_NOTICE, "failed to open TTY device %s\n", ttypath);
@ -400,6 +386,19 @@ int main(int argc, char *argv[])
}
}
/* Daemonize */
if (run_as_daemon) {
if (daemon(0, 0)) {
syslogger(LOG_ERR, "failed to daemonize");
exit(EXIT_FAILURE);
}
}
else {
/* Trap signals that we expect to receive */
signal(SIGINT, child_handler);
signal(SIGTERM, child_handler);
}
/* The Big Loop */
while (slcand_running)
sleep(1); /* wait 1 second */