diff --git a/lib/modules/Process.pmod b/lib/modules/Process.pmod
index 7b7e61294bff33f86034a9d025cbb3757217b1cd..f85ece94a3c7441d9f531bab606d5e870f24456b 100644
--- a/lib/modules/Process.pmod
+++ b/lib/modules/Process.pmod
@@ -32,20 +32,14 @@ varargs int spawn(string s,object stdin,object stdout,object stderr)
   {
     return pid;
   }else{
-    if(stdin) {
-      stdin->dup2(File("stdin"));
-      stdin->close();
-    }
-
-    if(stdout) {
-      stdout->dup2(File("stdout"));
-      stdout->close();
-    }
-
-    if(stderr) {
-      stderr->dup2(File("stderr"));
-      stderr->close();
-    }
+    if(stdin ) stdin ->dup2(File("stdin"));
+    if(stdout) stdout->dup2(File("stdout"));
+    if(stderr) stderr->dup2(File("stderr"));
+
+    if(stdin ) destruct(stdin);
+    if(stdout) destruct(stdout);
+    if(stderr) destruct(stderr);
+
     ::close();
     exec("/bin/sh","-c",s);
     exit(69);