Article 6401 of comp.lang.perl:
Xref: feenix.metronet.com comp.lang.perl:6401
Path: feenix.metronet.com!news.utdallas.edu!wupost!howland.reston.ans.net!spool.mu.edu!news.clark.edu!netnews.nwnet.net!news.uoregon.edu!gaia.ucs.orst.edu!ruby.oce.orst.edu!tardis.co.uk!bill
From: bill@tardis.co.uk (William Hails)
Newsgroups: comp.lang.perl
Subject: Re: For SVR4 implementations, could perl use lockf rather than flock?
Date: Mon, 4 Oct 93 10:32:43 BST
Organization: Perl-Users Mail2News gateway
Lines: 31
Message-ID: <4206.9310040932@devone.tardis.co.uk>
NNTP-Posting-Host: ruby.oce.orst.edu
Originator: daemon@ruby.oce.orst.edu


tchrist@cs.Colorado.EDU (Tom Christiansen):
> >From the keyboard of jcrowe@mpd.tandem.com:
> :Hi Perl gurus,
> :
> :    I just got perl to run on Tandem's SVR4 UNIX implementation.  One thing not provided
> :in SVR4 is flock(he said sheepishly), but file record locking does get provided through the
> :system call lockf().  Has anybody given thought to providing support for the perl function
> :flock using lockf?  Thanks in advance for any direction you folks might have to give....

> Probably you can go through fcntl() to get at it.

> --tom

Here's an example:

open(LOCKFILE, ">>/usr/sysop/etc/menulock") || die "cant open lockfile";
require('sys/fcntl.ph');
$lock = pack('s s l l s', &F_WRLCK, 0, 0, 0, 0);
fcntl(LOCKFILE, &F_SETLK, $lock) || die "another process has the lock";

It has the advantage over flock that the lock is network-wide.


  ===========================================================================
 | Bill Hails <bill@tardis.co.uk>    |                                       |
 | C.L.I. Connect Ltd.               | README: permission denied             |
 | 19, Quarry St., Guildford, Surrey |                                       |
 | GU1 3UY. Tel (UK) 0483 300 200    |                                       |
  ===========================================================================