different repr() after spawn()'ed or terminated
support {fd: CLOSE} pre-exec
support full I/O redirection
  * subprocess can send child's stderr to its stdout but not vice versa
  * subprocess does not dup(3) higher fd out of the box pre-exec,
  fortunately this won't have any effect unless the child use fdopen(3).
