How to suppress the output of an external module ?

Scott David Daniels scott.daniels at acm.org
Tue Dec 26 19:34:56 EST 2006


fdu.xiaojf at gmail.com wrote:
> Hi,
> 
> I'm writing a program which uses an external module written in C
> and calls a function provided by the module to do my job.  The
 > function produces a lot of output to the stdout.
> 
> Is there a way to suppress the output produced by the function and 
 > hence make my program run faster?

 > It's too complicated for me to modify the source code and recompile
 > the external module.
This would be the best method, you could define printf and fprintf
macros that would eliminate the output code altogether.

> Any hints will be greatly appreciated.
Well, it will depend on your OS, but the trick is to essentially
replace the C stdout channel with a file which has been opened to
write to "/dev/null" or "NUL.txt" (unix and Windows respectively).
You'll need to first copy the channel to another so you can use
it again after the function is done (a system call). Next do the
raw open (which should get the available channel), and the C stdout
stuff is successfully redirected.  Once done w/ your function,
close your new stdout and copy the channel back.

--Scott David Daniels
scott.daniels at acm.org



More information about the Python-list mailing list