Q: stderr redirect - popen2.popen3 - PythonWin crashes

Johannes Eble skywalkerpackage at hotmail.com
Tue Jan 15 17:37:43 CET 2002

Hello all,

I want to use ActivePython 2.1 as a launcher for elj-win32 (an Eiffel
compiler running in the dos box). The compiler is invoked by the
command 'compile'.

This compiler writes the output of the command 'compile -version' (the
version info) to stdout, but it writes the status messages of all real
compiling commands to stderr.

I have used the following code:

import popen2

childStdout, childStdin, childStderr = popen2.popen3('compile

print childStdout.read()

print childStderr.read()

This works, that is, I get the Stdout version information.

But when I change the 'compile -version' into 'compile main' (compile
the module 'main') to cature the Stderr status messages, PythonWin
doesn't respond anymore after the ~.read() commands. In fact it seems
that the whole PythonWin hangs, I can only kill it through the task

I have to say that the 'compile' command doesn't just invoke the
Eiffel compiler. 'compile' is a launcher for 'compile_to_c' (the
Eiffel code is first compiled to C) than a C compiler called lccwin32
is invoked and so on.

As you can execute any dos command in Python (with os), it is also
possible to write os.system('compile -version >out.txt'). But I don't
know the dos syntax for redirection of stderr.

It would be great if anybody could help me with the problem.



More information about the Python-list mailing list