What's up with our stdout?

John Baldwin john at baldwin.cx
Mon Jun 26 13:20:51 UTC 2006


On Monday 26 June 2006 00:07, Andrew Reilly wrote:
> On Sun, Jun 25, 2006 at 02:40:21PM -0700, John-Mark Gurney wrote:
> > Andrew Reilly wrote this message on Sun, Jun 25, 2006 at 11:17 +1000:
> > > One interesting problem that I found yesterday was that NetBSD
> > > have added a "-l" option to cat, which is supposed to apply an
> > > exclusive advisory lock with fcntl to the the output file, and
> > > wait until that succeeds:
> > > http://netbsd.gw.com/cgi-bin/man-cgi?cat++NetBSD-current
> > > That seems like a pretty useful idea,
> > > because it means that you can have parallel make jobs all
> > > contributing to a log file or the like (with cat -l >> foo.log),
> > > without getting in eachothers' way.
> > 
> > Why not use:
> > lockf -k foo.log cat >> foo.log
> > 
> > Should do the same thing...
> 
> Not only should it, I've just checked and discovered that it
> does.  So I'll make up the appropriate tweak to NetBSD's
> Makefiles, and suggest on the mailing lists that they think
> about incorporating it, as it's ostensibly a more general and
> useful way to do it.
> 
> This does make me wonder, though, why this _does_ work, given
> Bruce's explanation of why the nbcat code doesn't...
> 
> Hmm.  lockf.c uses open(...,|O_EXLOCK), rather than fcntl().
> Any particular reason why that should behave differently? 

I believe that's an 'flock()' rather than an 'fnctl()' range lock.

Are you doing your build over NFS btw?

-- 
John Baldwin


More information about the freebsd-arch mailing list