re PR libstdc++/9423 (filebuf::pubsetbuf(0, 0) doesn't turn off buffering if called after open)

2003-04-15  Benjamin Kosnik  <bkoz@redhat.com>
	    Paolo Carlini  <pcarlini@unitus.it>

	PR libstdc++/9423
	* docs/html/27_io/howto.html
	('The buffering is screwing up my program!'): Explain that
	opening counts as an I/O operation.

Co-Authored-By: Paolo Carlini <pcarlini@unitus.it>

From-SVN: r65665
This commit is contained in:
Benjamin Kosnik 2003-04-15 22:38:47 +00:00 committed by Paolo Carlini
parent 0b78a9b6a0
commit bafa3c3c06
2 changed files with 14 additions and 3 deletions

View File

@ -1,3 +1,11 @@
2003-04-15 Benjamin Kosnik <bkoz at redhat dot com>
Paolo Carlini <pcarlini at unitus dot it>
PR libstdc++/9423
* docs/html/27_io/howto.html
('The buffering is screwing up my program!'): Explain that
opening counts as an I/O operation.
2003-04-15 Andreas Tobler <a.tobler@schweiz.ch>
* testsuite/thread/pthread1.cc: Enable for darwin test.

View File

@ -159,15 +159,18 @@
because the data needs to appear quickly (a prime example is a
log file for security-related information). The way to do this is
just to turn off the buffering <em>before any I/O operations at
all</em> have been done, i.e., as soon as possible after opening:
all</em> have been done (note that opening counts as an I/O operation):
</p>
<pre>
std::ofstream os (&quot;/foo/bar/baz&quot;);
std::ifstream is (&quot;/qux/quux/quuux&quot;);
std::ofstream os;
std::ifstream is;
int i;
os.rdbuf()-&gt;pubsetbuf(0,0);
is.rdbuf()-&gt;pubsetbuf(0,0);
os.open(&quot;/foo/bar/baz&quot;);
is.open(&quot;/qux/quux/quuux&quot;);
...
os &lt;&lt; &quot;this data is written immediately\n&quot;;
is &gt;&gt; i; // and this will probably cause a disk read </pre>