diff options
author | June McEnroe <june@causal.agency> | 2020-08-14 13:08:06 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-08-14 16:00:35 -0400 |
commit | 231dcefc55bc041634c7ef7c9f077109144068c4 (patch) | |
tree | 14681623d57ae2126c241b48efc4af294b302187 /daemon.c | |
parent | Implement user and group lookup (diff) | |
download | catsit-231dcefc55bc041634c7ef7c9f077109144068c4.tar.gz catsit-231dcefc55bc041634c7ef7c9f077109144068c4.zip |
Open syslog, daemonize, write PID
Diffstat (limited to 'daemon.c')
-rw-r--r-- | daemon.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/daemon.c b/daemon.c index 0b07bb9..7030978 100644 --- a/daemon.c +++ b/daemon.c @@ -20,11 +20,13 @@ #include <grp.h> #include <pwd.h> #include <stdbool.h> +#include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/stat.h> #include <sysexits.h> +#include <syslog.h> #include <unistd.h> #include "daemon.h" @@ -114,7 +116,19 @@ int main(int argc, char *argv[]) { int fifo = open(fifoPath, O_RDONLY | O_NONBLOCK | O_CLOEXEC); if (fifo < 0) err(EX_CANTCREAT, "%s", fifoPath); - // TODO: Daemonize, write pid file. + openlog("spawnd", LOG_NDELAY | LOG_PID | LOG_PERROR, LOG_DAEMON); + + if (daemonize) { + error = daemon(0, 0); + if (error) { + syslog(LOG_ERR, "daemon: %m"); + return EX_OSERR; + } + } + if (pidPath) { + int len = dprintf(pidFile, "%ju", (uintmax_t)getpid()); + if (len < 0) syslog(LOG_WARNING, "%s: %m", pidPath); + } // TODO: Main loop. |