This is a wrapper around with fork() and exec*() syscalls, set up to work
with conduit datatypes for standard input, output, and error. If Nothing
is provided for any of those arguments, then the original file handles will
remain open to the child process.

If you would like to simply discard data provided by the child process,
provide sinkNull for stdout and/or stderr. To provide an empty input
stream, use return ().