Solved

file locker?

Posted on 2000-04-03
4
191 Views
Last Modified: 2013-12-25
how to make a file locker, so only one person can access the file a time?
0
Comment
Question by:syu1
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 
LVL 16

Accepted Solution

by:
maneshr earned 50 total points
ID: 2680805
if you are using PERL, you can use the flock function.

flock FILEHANDLE, OPERATION

Establishes or removes a lock on a file opened with filehandle. This function calls one of the Unix functions flock, lockf, or
the locking capabilities of fcntl, whichever your system supports. If none of these functions exist on your system, flock will
produce a fatal error.

operation is the type of locking function to perform. The number by each operation name is the argument that Perl's flock
takes by default. You may also use the operation names if you explicitly import them from the Fcntl module with use Fcntl
":flock".

     LOCK_SH (1)

          Establishes a shared lock on the file (read lock).

     LOCK_EX (2)

          Establishes an exclusive lock on the file (write lock).

     LOCK_UN (8)

          Removes a lock from the file.

     LOCK_NB (4)

          Prevents flock from blocking while trying to establish a lock with LOCK_SH or LOCK_EX and instructs it to return
          immediately. LOCK_NB must be ored with the other operation as an expression for the operation argument, i.e.,
          (LOCK_EX | LOCK_NB).



This function calls flock(2) on FILEHANDLE. See the manual page for flock(2) for the definition of OPERATION. Invoking flock will produce a fatal error if used on a machine that doesn't implement flock(2) or emulate it through some other locking mechanism. Here's a mailbox appender for some BSD-based systems:

$LOCK_SH = 1;
$LOCK_EX = 2;
$LOCK_NB = 4;
$LOCK_UN = 8;

sub lock {
    flock MBOX, $LOCK_EX;
    # and, in case someone appended
    # while we were waiting...
    seek MBOX, 0, 2;
}

sub unlock {
    flock MBOX, $LOCK_UN;
}

open MBOX, ">>/usr/spool/mail/$ENV{'USER'}" or die "Can't open mailbox: $!";

lock();
print MBOX $msg, "\n\n";
unlock();

Note that flock is unlikely to work on a file being accessed through a network file system.
=====================================================
0
 

Expert Comment

by:mwhuen
ID: 2684073
what is the use of
seek MBOX,0,2;
???
0
 
LVL 16

Expert Comment

by:maneshr
ID: 2684103
seek MBOX, 0, 2;


seek FILEHANDLE, OFFSET, WHENCE

This function positions the file pointer for FILEHANDLE, just like the fseek(3) call of standard I/O. The first position in a file is at offset 0, not offset 1, and offsets refer to byte positions, not line numbers.
0
 
LVL 84

Expert Comment

by:ozo
ID: 2684834
But since you opened MBOX with >> won't it automatically seek to the end to append?
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
AWS CLI issues with Tags 3 92
React or Angular? 6 86
Sums of coloumns in html/java 15 84
Bartender label printing - switch on and off graphics 3 71
Introduction:   Welcome to my first article ever. To begin with, the reason I write this article.  I participated in a question on Experts Exchange about the start command in Windows and there were some discussion about the usage. The discussio…
It is a general practice to get rid of old user profiles on a computer  in a LAN environment. As I have been working with a company in a LAN environment where users move from one place to some other place at times. This will make many user profil…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
In this fourth video of the Xpdf series, we discuss and demonstrate the PDFinfo utility, which retrieves the contents of a PDF's Info Dictionary, as well as some other information, including the page count. We show how to isolate the page count in a…

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question