aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorGravatar Anatol Pomozov <anatol.pomozov@gmail.com>2011-09-02 16:26:09 -0700
committerGravatar Miklos Szeredi <mszeredi@suse.cz>2011-09-23 13:28:51 +0200
commit7728b36a83fe20b366b1b6e72f3d0906ca89840c (patch)
treeaa6144ee508e80d4a6dd8c0b6a56606c32fd94bd /util
parent0131407f4e1a376b9165adca656d799c30af6311 (diff)
Replace daemon() function with fork()
daemon() is a BSD-ism. Although it is available on many platforms it is not a standard function. Some platforms (e.g. MacOSX) deprecated it. It is safer just to use fork() function that is a part of POSIX.
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);