pidfile, strerror(errno));
}
}
- free(text);
} else {
VLOG_ERR("%s: write failed: %s", tmpfile, strerror(errno));
close(fd);
}
+ free(text);
} else {
VLOG_ERR("%s: fcntl failed: %s", tmpfile, strerror(errno));
close(fd);
}
/* If daemonization is configured, then this function notifies the parent
- * process that the child process has completed startup successfully. */
+ * process that the child process has completed startup successfully.
+ *
+ * Calling this function more than once has no additional effect. */
void
daemonize_complete(void)
{
fork_notify_startup(daemonize_fd);
+ daemonize_fd = -1;
if (detach) {
setsid();
ignore(chdir("/"));
}
close_standard_fds();
+ detach = false;
}
}