diff options
author | Lennart Poettering <lennart@poettering.net> | 2008-07-28 23:23:11 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2008-07-28 23:23:11 +0200 |
commit | 50aba7c323215a210b1fd154b63f6f61d4aa165a (patch) | |
tree | 4ccec45c648979927971362f3d9d36e5efc127b4 | |
parent | 8e84945a0d8fbd721799a38d32ad0c9ec27edf65 (diff) |
add a bit more error checking
-rw-r--r-- | libdaemon/dfork.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/libdaemon/dfork.c b/libdaemon/dfork.c index 464af49..be57c09 100644 --- a/libdaemon/dfork.c +++ b/libdaemon/dfork.c @@ -131,14 +131,21 @@ pid_t daemon_fork(void) { sa_new.sa_handler = sigchld; sa_new.sa_flags = SA_RESTART; + if (sigemptyset(&ss_new) < 0) { + daemon_log(LOG_ERR, "sigemptyset() failed: %s", strerror(errno)); + return (pid_t) -1; + } + + if (sigaddset(&ss_new, SIGCHLD) < 0) { + daemon_log(LOG_ERR, "sigaddset() failed: %s", strerror(errno)); + return (pid_t) -1; + } + if (sigaction(SIGCHLD, &sa_new, &sa_old) < 0) { daemon_log(LOG_ERR, "sigaction() failed: %s", strerror(errno)); return (pid_t) -1; } - sigemptyset(&ss_new); - sigaddset(&ss_new, SIGCHLD); - if (sigprocmask(SIG_UNBLOCK, &ss_new, &ss_old) < 0) { daemon_log(LOG_ERR, "sigprocmask() failed: %s", strerror(errno)); |