diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2006-03-14 18:53:17 +0000 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2006-03-14 18:53:17 +0000 |
commit | 55dc9d47e12b483f6495ae6eaeeb2a7be2a2f02a (patch) | |
tree | cc883b0bbc883a94c7d8668310561821d7340118 /hcid/main.c | |
parent | 0c0287befae94479dcdb61bacd5a21e0c5841bed (diff) |
Use daemon() to put process into background
Diffstat (limited to 'hcid/main.c')
-rw-r--r-- | hcid/main.c | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/hcid/main.c b/hcid/main.c index 81dcbda6..a449f37b 100644 --- a/hcid/main.c +++ b/hcid/main.c @@ -539,13 +539,11 @@ extern char *optarg; int main(int argc, char *argv[], char *env[]) { - int daemon, dofork, sdp, opt, fd; struct sockaddr_hci addr; struct hci_filter flt; struct sigaction sa; GIOChannel *ctl_io; - - daemon = 1; dofork = 1; sdp = 0; + int opt, daemonize = 1, sdp = 0; /* Default HCId settings */ hcid.auto_init = 1; @@ -562,7 +560,7 @@ int main(int argc, char *argv[], char *env[]) while ((opt = getopt(argc, argv, "nsf:")) != EOF) { switch (opt) { case 'n': - daemon = 0; + daemonize = 0; break; case 's': @@ -579,18 +577,9 @@ int main(int argc, char *argv[], char *env[]) } } - if (daemon) { - if (dofork && fork()) - exit(0); - - /* Direct stdin,stdout,stderr to '/dev/null' */ - fd = open("/dev/null", O_RDWR); - dup2(fd, 0); dup2(fd, 1); dup2(fd, 2); - close(fd); - - setsid(); - - chdir("/"); + if (daemonize && daemon(0, 0)) { + error("Can't daemonize: %s (%d)", strerror(errno), errno); + exit(1); } umask(0077); |