[fpc-pascal] Unbuffering I/O

Sven Barth pascaldragon at googlemail.com
Wed Aug 29 22:03:55 CEST 2018


Am 29.08.2018 um 18:25 schrieb Mark Morgan Lloyd:
> 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" :-)
>
SetTextBuf() does not influence the handle itself, only the buffer of 
the file/text record, so it should be safe to use.

Regards,
Sven



More information about the fpc-pascal mailing list