diff --git a/sm5/smartd.cpp b/sm5/smartd.cpp
index a1f1d39c54cd540b5436823cb29b35f3a66abda2..9dde039353702fabc0ccbdf368dd531f2897c029 100644
--- a/sm5/smartd.cpp
+++ b/sm5/smartd.cpp
@@ -138,7 +138,7 @@ extern const char *os_solaris_ata_s_cvsid;
 #ifdef _WIN32
 extern const char *daemon_win32_c_cvsid, *hostname_win32_c_cvsid, *syslog_win32_c_cvsid;
 #endif
-const char *smartd_c_cvsid="$Id: smartd.cpp,v 1.437 2009/01/31 09:50:25 dlukes Exp $"
+const char *smartd_c_cvsid="$Id: smartd.cpp,v 1.438 2009/01/31 13:21:32 dlukes Exp $"
 ATACMDS_H_CVSID CONFIG_H_CVSID
 #ifdef DAEMON_WIN32_H_CVSID
 DAEMON_WIN32_H_CVSID
@@ -1367,10 +1367,12 @@ void DaemonInit(){
 
   // redirect any IO attempts to /dev/null for stdin
   i=open("/dev/null",O_RDWR);
-  // stdout
-  NO_warn_unused_result(dup(i));
-  // stderr
-  NO_warn_unused_result(dup(i));
+  if (i>0) {
+    // stdout
+    NO_warn_unused_result(dup(i));
+    // stderr
+    NO_warn_unused_result(dup(i));
+  };
   umask(0);
   NO_warn_unused_result(chdir("/"));