In article <ma**************************************@python.o rg>,
Wilbert Berendsen <wb****@xs4all.nlwrote:
Hi,
using pty.spawn() it seems that stderr output of the spawned process is
directed to stdout. Is there a way to keep stderr separate and only direct
stdin and stdout to the pty?
There is, of course.
First, you have to decide where you want unit 2 ("stderr") to go, and
then get the spawned process to redirect it there. If a disk file
will do, then your question is just "how do I redirect error output
to a disk file, in ___" (fill in the blank with language used to
implement the spawned process - UNIX shell? Python? C?)
More likely, you want the spawned process' error output to go wherever
the parent's error output was going. This is a little trickier.
Ideally, your spawned shell script can conveniently take a new
parameter that identifies the new file descriptor unit number for
error output. In this case, use fd2 = os.dup(2) to get a new
duplicate, add a parameter like -e str(fd2), and in the spawned
process, redirect from that unit - in UNIX shell, exec 2>&$fd2
Or you could use an environment variable to identify the backup
error unit, if the command line parameter option isn't available
for some reason.
Donn Cave,
do**@u.washington.edu