stdout and stderr in Linux

UNIXer,

Can I redirect the stdout and stderr to a temporary file by the following code ?
  filename=tmpnam(0);
  freopen(filename, "w", stderr);
  freopen(filename, "w", stdout);

But, how come I cannot print characters to the original stdout and stderr by doing the following code ?
  stdout=fopen("/dev/stdout", "w");
  stderr=fopen("/dev/stderr", "w");

Anyway, how can I achieve it ?

Andrew
andrewyuAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
seedyConnect With a Mentor Commented:
By default stdin and stdout will be pointing to the terminal.
So, when you want to restore them, you would do
   stdout = fopen("/dev/tty", "w");
   stderr = fopen("/dev/tty", "w");
Hope this helps.
PS: Andrewyu, why is that you never grade answers?
   
0
 
seedyCommented:
BTW, there is no device like '/dev/stdout' or '/dev/stderr'.
From man pages for 'tty':
The file '/dev/tty' is, in each process, a synonym for the
control terminal associated with the process group of that
process, if any.
0
 
sinuCommented:
Go thru a good book on unix file io.

 there is no device like '/dev/stdout' or '/dev/stderr'.
From man pages for 'tty':
The file '/dev/tty' is, in each process, a synonym for the
control terminal associated with the process group of that
process, if any.
0
 
seedyCommented:
Sinu,
Hope you did not mean to do that!
0
All Courses

From novice to tech pro — start learning today.