Just so there’s no magic: you can only write data into a process’s STDIN; STDERR is always an output FD you can only read or redirect. If you want to feed your program on fd 2 (e.g. it actually does an os.read(2,…)
), you must dup your stdin‐pipe onto fd 2 in the child before exec
. Otherwise just use send
/sendline
to write to STDIN and stderr=PIPE
(or a file) to capture its error‐output.