Date: Mon, 26 Jun 2006 08:44:07 -0400 From: John Baldwin <john@baldwin.cx> To: freebsd-arch@freebsd.org Subject: Re: What's up with our stdout? Message-ID: <200606260844.07341.john@baldwin.cx> In-Reply-To: <20060626040754.GA30475@duncan.reilly.home> References: <20060625011746.GC81052@duncan.reilly.home> <20060625214021.GJ82074@funkthat.com> <20060626040754.GA30475@duncan.reilly.home>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200606260844.07341.john>