lkml.org 
[lkml]   [1998]   [Aug]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: Out of ptys
Date
Followup to:  <Pine.LNX.3.95.980826132017.375A-100000@chaos.analogic.com>
By author: "Richard B. Johnson" <root@chaos.analogic.com>
In newsgroup: linux.dev.kernel
>
> Alan,
> This shows the problem I reported to the glibc folks about a year
> go. Note that both functions, good() and bad(), are identical except
> for the fds that I close.
>
> void bad()
> {
> int i;
> close(STDOUT_FILENO);
> i = fprintf(stdout, "Hello world!\n");
> if(i > 0)
> fprintf(stderr, "Bad! %d bytes copied to (closed) stdout...\n", i);
> else
> fprintf(stderr, "Good! (%d)\n", i);
> }
>
> void good()
> {
> int i;
> close(STDERR_FILENO);
> i = fprintf(stderr, "Hello world!\n");
> if(i > 0)
> fprintf(stdout, "Bad! %d bytes copied to (closed) stderr...\n", i);
> else
> fprintf(stdout, "Good! (%d)\n", i);
> }
>

This is perfectly understandable: stdout is a buffered stream, stderr
isn't. Your bug is mixing low-level functions (e.g. close()) with
stdio without an intervening fflush().

-hpa
--
PGP: 2047/2A960705 BA 03 D3 2C 14 A8 A8 BD 1E DF FE 69 EE 35 BD 74
See http://www.zytor.com/~hpa/ for web page and full PGP public key
I am Bahá'í -- ask me about it or see http://www.bahai.org/
"To love another person is to see the face of God." -- Les Misérables

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html

\
 
 \ /
  Last update: 2005-03-22 13:44    [W:2.221 / U:0.336 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site