diff --git a/lib/daemonize.c b/lib/daemonize.c
index e91629497785d3f79e4e4fd318a82b533cf18784..73b2d5803c79ff8b70e9f93c39b3318ee167b90e 100644
--- a/lib/daemonize.c
+++ b/lib/daemonize.c
@@ -142,9 +142,20 @@ lws_daemonize(const char *_lock_path)
 		exit(9);
 	}
 
-	/* If we got a good PID, then we can exit the parent process. */
-	if (pid_daemon > 0)
-		exit(0);
+        /* If we got a good PID, then we can exit the parent process. */
+	if (pid_daemon > 0) {
+
+               /*
+                * Wait for confirmation signal from the child via
+                * SIGCHILD / USR1, or for two seconds to elapse
+                * (SIGALRM).  pause() should not return.
+                */
+               alarm(2);
+
+               pause();
+               /* should not be reachable */
+               exit(1);
+       }
 
 	/* At this point we are executing as the child process */
 	parent = getppid();