Commit bafa3c3c by Benjamin Kosnik Committed by Paolo Carlini

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
parent 0b78a9b6
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> 2003-04-15 Andreas Tobler <a.tobler@schweiz.ch>
* testsuite/thread/pthread1.cc: Enable for darwin test. * testsuite/thread/pthread1.cc: Enable for darwin test.
......
...@@ -159,15 +159,18 @@ ...@@ -159,15 +159,18 @@
because the data needs to appear quickly (a prime example is a because the data needs to appear quickly (a prime example is a
log file for security-related information). The way to do this is 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 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> </p>
<pre> <pre>
std::ofstream os (&quot;/foo/bar/baz&quot;); std::ofstream os;
std::ifstream is (&quot;/qux/quux/quuux&quot;); std::ifstream is;
int i; int i;
os.rdbuf()-&gt;pubsetbuf(0,0); os.rdbuf()-&gt;pubsetbuf(0,0);
is.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;; os &lt;&lt; &quot;this data is written immediately\n&quot;;
is &gt;&gt; i; // and this will probably cause a disk read </pre> is &gt;&gt; i; // and this will probably cause a disk read </pre>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment