Index: varnish-cache/doc/sphinx/reference/varnishd.rst
===================================================================
--- varnish-cache/doc/sphinx/reference/varnishd.rst	(revision 5487)
+++ varnish-cache/doc/sphinx/reference/varnishd.rst	(working copy)
@@ -118,6 +118,7 @@
             thread_pool_max are both set to this number, and
             thread_pool_timeout has no effect.
 
+-X          Do not auto-start child process. The child process must be started explicitly with a CLI command.
 
 
 
Index: varnish-cache/bin/varnishd/mgt.h
===================================================================
--- varnish-cache/bin/varnishd/mgt.h	(revision 5487)
+++ varnish-cache/bin/varnishd/mgt.h	(working copy)
@@ -42,6 +42,7 @@
 
 extern struct vev_base	*mgt_evb;
 extern unsigned		d_flag;
+extern unsigned		X_flag;
 extern int		exit_status;
 
 /* mgt_child.c */
Index: varnish-cache/bin/varnishd/varnishd.c
===================================================================
--- varnish-cache/bin/varnishd/varnishd.c	(revision 5487)
+++ varnish-cache/bin/varnishd/varnishd.c	(working copy)
@@ -80,6 +80,7 @@
 struct heritage		heritage;
 volatile struct params	* volatile params;
 unsigned		d_flag = 0;
+unsigned		X_flag = 0;
 pid_t			mgt_pid;
 struct vev_base		*mgt_evb;
 int			exit_status = 0;
@@ -178,6 +179,7 @@
 	fprintf(stderr, FMT, "", "  -w <fixed_count>");
 	fprintf(stderr, FMT, "", "  -w min,max");
 	fprintf(stderr, FMT, "", "  -w min,max,timeout [default: -w2,500,300]");
+	fprintf(stderr, FMT, "-X", "Don't auto-start child on startup");
 	fprintf(stderr, FMT, "-u user", "Priviledge separation user id");
 #undef FMT
 	exit(1);
@@ -425,7 +427,7 @@
 	cli_check(cli);
 
 	while ((o = getopt(argc, argv,
-	    "a:b:Cdf:Fg:h:i:l:L:M:n:P:p:S:s:T:t:u:Vx:w:")) != -1)
+	    "a:b:Cdf:Fg:h:i:l:L:M:n:P:p:S:s:T:t:u:Vx:Xw:")) != -1)
 		switch (o) {
 		case 'a':
 			MCF_ParamSet(cli, "listen_address", optarg);
@@ -505,6 +507,9 @@
 #endif /* DIAGNOSTICS */
 			usage();
 			break;
+		case 'X':
+			X_flag++;
+			break;
 		case 'w':
 			tackle_warg(optarg);
 			break;
Index: varnish-cache/bin/varnishd/mgt_child.c
===================================================================
--- varnish-cache/bin/varnishd/mgt_child.c	(revision 5487)
+++ varnish-cache/bin/varnishd/mgt_child.c	(working copy)
@@ -630,7 +630,7 @@
 
 	if (!d_flag && !mgt_has_vcl())
 		REPORT0(LOG_ERR, "No VCL loaded yet");
-	else if (!d_flag) {
+	else if (!d_flag && !X_flag) {
 		start_child(NULL);
 		if (child_state == CH_STOPPED)
 			exit(2);
