Redirection of stderr

Jonathan I. Kamens jik at athena.mit.edu
Fri Mar 15 08:06:50 AEST 1991


In article <574 at dprmpt.UUCP>, larry at dprmpt.UUCP (Larry) writes:
|> In a C program, how can I change stderr from wherever it is directed
|> via the command line to a file, then later revert it back to it's 
|> original destination?

  This is not a comp.unix.wizards question.  I have cross-posted this response
to comp.unix.questions and directed followups there.

  First, "stderr_fd = dup(fileno(stderr))" to preserve the original stderr
output direction.  Then "fclose(stderr)", and immediately do "stderr =
fopen(your_stderr_file, "w")" (the "immediately" is so that the newly opened
file will get the same file descriptor stderr had, in case you've got that
file descriptor hard-coded somewhere in your code).  When you're done,
"fclose(stderr)" and do "stderr = fdopen(stderr_fd, "w")" to put things back
the way they were originally.

-- 
Jonathan Kamens			              USnail:
MIT Project Athena				11 Ashford Terrace
jik at Athena.MIT.EDU				Allston, MA  02134
Office: 617-253-8085			      Home: 617-782-0710



More information about the Comp.unix.internals mailing list