Discussion:
Question regarding fwrite() and fflush()
(too old to reply)
Lew Pitcher
2024-06-25 18:42:55 UTC
Permalink
In a recent reply here, I posted some code that used fwrite() to write
binary data to a file. One version of this code used mmap() to access
this binary data in-situ, and I wonder if I should have called fflush()
before calling mmap().

I understand the where to use fflush() on standard text formatted output
(where you use fprintf(), etc to externalize the output), but I don't see
anything my copies of either the ISO C or POSIX standards that say that
I /should/ use fflush(), but neither do I see anything that says I /need
not/ use fflush().

So, wiser and more experienced minds, should I use fflush() in this case
or not?
--
Lew Pitcher
"In Skills We Trust"
Tim Rentsch
2024-06-25 20:55:47 UTC
Permalink
Post by Lew Pitcher
In a recent reply here, I posted some code that used fwrite() to write
binary data to a file. One version of this code used mmap() to access
this binary data in-situ, and I wonder if I should have called fflush()
before calling mmap().
I understand the where to use fflush() on standard text formatted output
(where you use fprintf(), etc to externalize the output), but I don't see
anything my copies of either the ISO C or POSIX standards that say that
I /should/ use fflush(), but neither do I see anything that says I /need
not/ use fflush().
So, wiser and more experienced minds, should I use fflush() in this case
or not?
Yes, do use fflush().

In the alternative, do a setbuf( file, 0 ) so that 'file' is
unbuffered.
Lew Pitcher
2024-06-25 21:28:24 UTC
Permalink
Post by Tim Rentsch
Post by Lew Pitcher
In a recent reply here, I posted some code that used fwrite() to write
binary data to a file. One version of this code used mmap() to access
this binary data in-situ, and I wonder if I should have called fflush()
before calling mmap().
I understand the where to use fflush() on standard text formatted output
(where you use fprintf(), etc to externalize the output), but I don't see
anything my copies of either the ISO C or POSIX standards that say that
I /should/ use fflush(), but neither do I see anything that says I /need
not/ use fflush().
So, wiser and more experienced minds, should I use fflush() in this case
or not?
Yes, do use fflush().
As I suspected.
Now, my code includes an fflush() after all the fwrite()s are complete.
Post by Tim Rentsch
In the alternative, do a setbuf( file, 0 ) so that 'file' is
unbuffered.
Thanks
--
Lew Pitcher
"In Skills We Trust"
Lawrence D'Oliveiro
2024-06-25 22:54:58 UTC
Permalink
Post by Lew Pitcher
In a recent reply here, I posted some code that used fwrite() to write
binary data to a file. One version of this code used mmap() to access
this binary data in-situ, and I wonder if I should have called fflush()
before calling mmap().
Yes.

Whether the data is buffered or not, is independent of whether the data is
text or not.

Loading...