diff --git a/vl.c b/vl.c
index 48049ef..ae1794f 100644
--- a/vl.c
+++ b/vl.c
@@ -3395,17 +3395,26 @@ int main(int argc, char **argv, char **envp)
     if (display_type == DT_NOGRAPHIC) {
         if (default_parallel)
             add_device_config(DEV_PARALLEL, "null");
-        if (default_serial && default_monitor) {
-            add_device_config(DEV_SERIAL, "mon:stdio");
-        } else if (default_virtcon && default_monitor) {
-            add_device_config(DEV_VIRTCON, "mon:stdio");
+        if (!is_daemonized()) {
+            if (default_serial && default_monitor) {
+                add_device_config(DEV_SERIAL, "mon:stdio");
+            } else if (default_virtcon && default_monitor) {
+                add_device_config(DEV_VIRTCON, "mon:stdio");
+            } else {
+                if (default_serial)
+                    add_device_config(DEV_SERIAL, "stdio");
+                if (default_virtcon)
+                    add_device_config(DEV_VIRTCON, "stdio");
+                if (default_monitor)
+                    monitor_parse("stdio", "readline");
+            }
         } else {
             if (default_serial)
-                add_device_config(DEV_SERIAL, "stdio");
+                add_device_config(DEV_SERIAL, "null");
             if (default_virtcon)
-                add_device_config(DEV_VIRTCON, "stdio");
+                add_device_config(DEV_VIRTCON, "null");
             if (default_monitor)
-                monitor_parse("stdio", "readline");
+                monitor_parse("stdio", "null");
         }
     } else {
         if (default_serial)
