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);