aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
Diffstat (limited to 'util')
-rw-r--r--util/ulockmgr_server.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/util/ulockmgr_server.c b/util/ulockmgr_server.c
index 583fcf9..baef45d 100644
--- a/util/ulockmgr_server.c
+++ b/util/ulockmgr_server.c
@@ -352,11 +352,24 @@ int main(int argc, char *argv[])
if (*end)
goto out_inval;
- if (daemon(0, 1) == -1) {
- perror("ulockmgr_server: daemon");
+ /* demonize current process */
+ switch(fork()) {
+ case -1:
+ perror("ulockmgr_server: fork");
exit(1);
+ case 0:
+ break;
+ default:
+ _exit(0);
}
+ if (setsid() == -1) {
+ perror("ulockmgr_server: setsid");
+ exit(1);
+ }
+
+ (void) chdir("/");
+
sigemptyset(&empty);
sigprocmask(SIG_SETMASK, &empty, NULL);