This is the mail archive of the
cygwin@cygwin.com
mailing list for the Cygwin project.
Re: Redirect both stdout & stderr to the same file
"Igor Pechtchanski" <pechtcha@cs.nyu.edu> wrote in message Pine.GSO.4.44.0306141900400.25752-100000@slinky.cs.nyu.edu">news:Pine.GSO.4.44.0306141900400.25752-100000@slinky.cs.nyu.edu...
> On Sat, 14 Jun 2003, Alex Vinokur wrote:
>
> > ===========================================
> > Windows 2000
> > CYGWIN_NT-5.0 1.3.22(0.78/3/2)
> > GNU gcc version 3.2 20020927 (prerelease)
> > ===========================================
> >
> > ------ C code : BEGIN ------
> > /* File t.c */
> > #include <stdio.h>
> > int main()
> > {
> > fprintf (stdout, "(1) to stdout\n");
> > fprintf (stderr, "(2) to stderr\n");
> > fprintf (stdout, "(3) to stdout\n");
> > return 0;
> > }
> > ------ C code : END --------
> >
> > $ gcc t.c
> >
> > $ a &>zzz
> >
> > $ cat zzz
> >
> > (2) to stderr
> > (1) to stdout
> > (3) to stdout
> >
> > -----------------------
> > Expected :
> > (1) to stdout
> > (2) to stderr
> > (3) to stdout
> > -----------------------
> >
> > What is wrong?
>
> Buffering. stdout is buffered, stderr isn't. Try adding "fflush(stdout)"
> after the first fprintf. This is a basic C stdio question, it'll work the
> same way on Linux, FYI.
[snip]
Thanks.
Something else.
It seems that cerr isn't buffered.
===========================================
Windows 2000
CYGWIN_NT-5.0 1.3.22(0.78/3/2)
GNU gcc/g++ version 3.2 20020927 (prerelease)
===========================================
--------- C++ code : BEGIN ---------
// File t.cpp
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
fprintf (stdout, "(01) to stdout\n");
fprintf (stderr, "(02) to stderr\n");
fprintf (stdout, "(03) to stdout\n");
fprintf (stderr, "(04) to stderr\n");
cout << "(05) to cout" << endl;
cerr << "(06) to cerr" << endl;
clog << "(07) to clog" << endl;
cout << "(08) to cout" << endl;
cerr << "(09) to cerr" << endl;
clog << "(10) to clog" << endl;
fprintf (stdout, "(11) to stdout\n");
fprintf (stderr, "(12) to stderr\n");
cout << "(13) to cout" << endl;
cerr << "(14) to cerr" << endl;
clog << "(15) to clog" << endl;
return 0;
}
--------- C++ code : END -----------
--------- Run Log : BEGIN ---------
$ g++ t.cpp
$ a 2>&1 | more
(02) to stderr
(04) to stderr
(01) to stdout
(03) to stdout
(05) to cout
(06) to cerr
(07) to clog
(08) to cout
(09) to cerr
(10) to clog
(12) to stderr
(11) to stdout
(13) to cout
(14) to cerr
(15) to clog
--------- Run Log : END -----------
==========================================
Alex Vinokur
mailto:alexvn@connect.to
http://www.simtel.net/pub/oth/19088.html
http://sourceforge.net/users/alexvn
==========================================
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/