[fpc-pascal] Unbuffering I/O

Mark Morgan Lloyd markMLl.fpc-pascal at telemetry.co.uk
Wed Aug 29 18:25:23 CEST 2018


On 29/08/18 16:00, Henry Vermaak wrote:
> On Wed, Aug 29, 2018 at 03:01:54PM +0000, Mark Morgan Lloyd wrote:> I think I've seen this question asked before, my apologies if this was> recently.> > I've got two programs intended to be functionally identical, one in Perl and> the other in FPC. They read a unix-domain datagram, decode the message, and> emit output; if this goes to a file then it's reasonable to monitor it using> tail -f> > Perl has a variable that you can set to force output to be unbuffered, with> the result that as soon as a message is output it's in the file in its> entirety.> > Is there an equivalent for Pascal, or should I be using something like> fpSync(stdout) at opportune times?
> Does SetTextBuf() with a buffer of size 1 work?  I don't think there isanything equivalent to setvbuf().  Otherwise you'll have to Flush() themmanually, which is a pain.

I'm a bit wary of SetTextBuf() with a preopened handle. Flush() is 
actually no big deal since the program has a well-defined processing 
loop... but unfortunately is less than effective.

It's something I can live with, since this is really only a test program 
I knocked together to look at how clock_gettime() behaves on different 
platforms (the answer being "badly" :-)

-- 
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]



More information about the fpc-pascal mailing list