On 2023-01-04 16:46:37 +1100, Chris Angelico wrote: > On Wed, 4 Jan 2023 at 15:11, Eryk Sun <eryk...@gmail.com> wrote: > > On 1/3/23, Chris Angelico <ros...@gmail.com> wrote: > > > writing the FD is the same as using stdout > > > > Except stdout may be buffered.
Maybe I'm overly lax in my terminology, but I frequently use the term "stdout" as a shorthand for "standard output" which refers to file descriptor 1, not just to the C FILE* of that name. Or Python's sys.stdout which is a different thing again (but also is a frontend to FD 1). > > One should probably flush the buffer > > before each raw write to the file descriptor. > > FDs can also be buffered. That depends on what you mean by "buffered". A write to an fd referring to a file on a disk will not usually affect the disk, true. But it will be immediately visible to other processes reading that file. A write to a terminal attached via a serial cable will also be written to a buffer first (in the OS or maybe inside the UART), but it will be sent to the terminal as fast as the hardware allows. So. sure, the writes are "buffered", but is that meaningful in this context? Reading from a terminal also often involves a buffer, but in a very different sense: Here the OS buffers each line to implement line editing functions. If the kernel didn't do that each application which could possibly read from a terminal would have to implement that itself. and it was decided back in the 1970's that this wasn't a good use of resources. (Of course these days many programs which didn't do that originally (like shells) do implement line editing (often via readline).) > If it's buffering you want to avoid, don't > mess around with exactly which one you're writing to, just flush. I don't think fsync() will have an effect on an FD connected to a terminal (or a pipe or a socket). hp -- _ | Peter J. Holzer | Story must make more sense than reality. |_|_) | | | | | h...@hjp.at | -- Charles Stross, "Creative writing __/ | http://www.hjp.at/ | challenge!"
signature.asc
Description: PGP signature
-- https://mail.python.org/mailman/listinfo/python-list