develooper Front page | perl.perl5.porters | Postings from May 2003

Re: [perl #22339] IO::Handle::setvbuf not defined properly

Mark Jason Dominus
May 28, 2003 05:58
Re: [perl #22339] IO::Handle::setvbuf not defined properly
Message ID:
Rafael Garcia-Suarez <>:
> setbuf/setvbuf aren't available with a PerlIO-enabled perl.


Here's my problem.  I want two processes to access the same (small)
file concurrently.  Process A reads part of the file.  Process B
modifies part of the file.  Then process A wants to see the change.
But it can't, because the block it just read is buffered, and
subsequent reads are all coming from the buffer, which records the
state of the file before the change, instead of from the real file.

I thought my choices were

a) use setvbuf() to discard the buffer, perhaps temporarily, or

b) discard the buffered I/O system entirely and rewrite everything in
terms of sysread(), effectively reimplementing the entire buffered I/O
subsystem in Perl.

But now it appears that my only choice is (b).  This isn't very
attractive.  Is there some other option I've overlooked? Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About