diff options
Diffstat (limited to 'src/proone.c')
-rw-r--r-- | src/proone.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/proone.c b/src/proone.c index 9302157..35c11a1 100644 --- a/src/proone.c +++ b/src/proone.c @@ -1022,7 +1022,6 @@ int main (const int argc, const char **args) { sigaddset(&ss_all, SIGPIPE); prne_g.parent_start = prne_gettime(CLOCK_MONOTONIC); - prne_g.parent_pid = getpid(); prne_g.blackhole[0] = -1; prne_g.blackhole[1] = -1; prne_g.shm_fd = -1; @@ -1057,6 +1056,24 @@ int main (const int argc, const char **args) { set_host_credential(args[1]); } + // post-init + { + // daemonise + const pid_t f_ret = fork(); + + if (f_ret < 0) { + exit_code = 2; + goto END; + } + else if (f_ret == 0) { + prne_g.parent_pid = getpid(); + } + else { + goto END; + } + } + + sigprocmask(SIG_BLOCK, &ss_all, NULL); // main loop while (loop) { |