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
parent
01041fddd6
commit
33a9249571
27
slcand.c
27
slcand.c
|
|
@ -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 */
|
||||
|
|
|
|||
Loading…
Reference in New Issue