aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/helper.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/helper.c b/lib/helper.c
index 28c6310..97577c2 100644
--- a/lib/helper.c
+++ b/lib/helper.c
@@ -176,6 +176,13 @@ int fuse_daemonize(int foreground)
{
if (!foreground) {
int nullfd;
+ int waiter[2];
+ char completed;
+
+ if (pipe(waiter)) {
+ perror("fuse_daemonize: pipe");
+ return -1;
+ }
/*
* demonize current process by forking it and killing the
@@ -188,6 +195,7 @@ int fuse_daemonize(int foreground)
case 0:
break;
default:
+ read(waiter[0], &completed, sizeof(completed));
_exit(0);
}
@@ -206,6 +214,12 @@ int fuse_daemonize(int foreground)
if (nullfd > 2)
close(nullfd);
}
+
+ /* Propagate completion of daemon initializatation */
+ completed = 1;
+ write(waiter[1], &completed, sizeof(completed));
+ close(waiter[0]);
+ close(waiter[1]);
} else {
(void) chdir("/");
}