Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Perl flock - f_rdlck not working

Posted on 2000-03-11
9
Medium Priority
?
377 Views
Last Modified: 2006-11-17
1) I execute the first program with the following statements:

$READLOCK = 1;
$EXCLUSIVE = 2;
$UNLOCK = 8;

unless (open(INFILE, "test.tmp"))
{
      print $query->header;
      &message("Unable to open in file");
}
flock (INFILE, $READLOCK);
sleep(20);
flock (INFILE, $UNLOCK);
close(INFILE);


3) I execute a second pgm immediately after the first. The second pgm tries to read the same file(i.e. INFILE):

The second file successfully reads the INFILE before the first program completes; in other words, the $READLOCK in the first pgm is not locking file INFILE. By the way, the $EXCLUSIVE works correctly!!


Platform: UNIX - Solaris

object: $READLOCK must prevent any other file(i.e. read lock) from reading it. One solution is to execute chmod in the first pgm and set INFILE to 333. After it is complete, change it back to 644. However, I do not like this hack!!
0
Comment
Question by:ronandersen
[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
  • 3
  • 3
  • 3
9 Comments
 
LVL 16

Expert Comment

by:maneshr
ID: 2608085
i think its working properly as its supposed to. Lock 1 is a shared lock, so other processes can still read from the locked file.

here is some PERL documentation that talks about file locks.
==========================

LOCK_SH (1)

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

LOCK_EX (2)

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

Also the polite process customarily indicates its intent to read from the file by requesting a LOCK_SH. Many processes can have
simultaneous shared locks on the file because they (presumably) won't be changing the data. If a process intends to write to the
file, it should request an exclusive lock via LOCK_EX
0
 

Author Comment

by:ronandersen
ID: 2608141
maneshr,

I am questioning the lock_sh. Why would you want to allow other people to read a file if a pgm request a read lock??




0
 
LVL 16

Expert Comment

by:maneshr
ID: 2608167
lock sh is a shared lock i.e. the file can be read from. Thats the actual implementation of a shared lock.

if you dont what to allow any other process to read from the file you would need an exclusive lock (as you have yourself mentioned above).
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 84

Expert Comment

by:ozo
ID: 2608431
1 is a shared lock.  If you don't want to share, use an exclusive lock.
0
 
LVL 84

Expert Comment

by:ozo
ID: 2608437
Also, flock does not lock out other programs doing a read or a write, flock locks out other programs doing a flock.
0
 

Author Comment

by:ronandersen
ID: 2608563
Ok,

We are getting closer..

I tried using the exclusive lock on the first pgm, however, the second pgm still was able to read the file..

How would I prevent another process from reading a file??
0
 
LVL 84

Expert Comment

by:ozo
ID: 2608572
The other process should not read unless it has aquires a flock.
0
 

Author Comment

by:ronandersen
ID: 2634537
For those of you responding,

When I flock a file as exclusive, other files can still read the locked file. Is this correct??
0
 
LVL 16

Accepted Solution

by:
maneshr earned 200 total points
ID: 2636328
yes thats right.
0

Featured Post

Tech or Treat!

Submit an article about your scariest tech experience—and the solution—and you’ll be automatically entered to win one of 4 fantastic tech gadgets.

Question has a verified solution.

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

I've just discovered very important differences between Windows an Unix formats in Perl,at least 5.xx.. MOST IMPORTANT: Use Unix file format while saving Your script. otherwise it will have ^M s or smth likely weird in the EOL, Then DO NOT use m…
Many time we need to work with multiple files all together. If its windows system then we can use some GUI based editor to accomplish our task. But what if you are on putty or have only CLI(Command Line Interface) as an option to  edit your files. I…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
Six Sigma Control Plans

604 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