diff --git a/run.go b/run.go
index <HASH>..<HASH> 100644
--- a/run.go
+++ b/run.go
@@ -33,9 +33,15 @@ func StartWithSize(c *exec.Cmd, sz *Winsize) (pty *os.File, err error) {
 			return nil, err
 		}
 	}
-	c.Stdout = tty
-	c.Stdin = tty
-	c.Stderr = tty
+	if c.Stdout == nil {
+		c.Stdout = tty
+	}
+	if c.Stderr == nil {
+		c.Stderr = tty
+	}
+	if c.Stdin == nil {
+		c.Stdin = tty
+	}
 	if c.SysProcAttr == nil {
 		c.SysProcAttr = &syscall.SysProcAttr{}
 	}
Don't set Stdin/Stdout/Stderr if already set (#<I>)

* only set stdout and stderr if not already set



* Don't set cmd.Stdin if it's already set



Considered @craek's codereview