08-31-2009
lock the file in linux
Quote:
Originally Posted by
sharadpisal
from perldoc -f flock
Two potentially non-obvious but traditional flock semantics are that it waits indefinitely until the lock is granted, and that its locks merely advisory. Such discretionary locks are more flexible, but offer fewer guarantees. This means that programs that do not also use flock may modify files locked with flock.
So you need to use same locking mechanism in all processes interested in locking the file, in order to ensure that files gets locked properly.
All file locking algo works like this:
While (file_is_locked()) {
wait;
}
lock_the file();
Do_somthing_on_file;
unlock_the_file();
Its up to you to decide, what you mean when you say 'lock_the file();' I suggest to create lock file, so 'file_is_locked()' will mean checking existance of .lock file.
HTH;
---------- Post updated at 05:45 PM ---------- Previous update was at 05:44 PM ----------
That wont help if, all processes interested in having lock on perticular file, runs with same user id.
so, If I just want to use a process (perl) to hold/lock the file and do not allow other to edit or modify , any method to do it in perl ???
Please suggest .....
6 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
how can I lock my keyboard while I'm away from the computer without using lock command. What other commands gives me the option to lock keyboard device?
thanks (7 Replies)
Discussion started by: dianayun
7 Replies
2. UNIX for Dummies Questions & Answers
Hi,
We have a lock file being created called lck8c0001 created in Unixware 2.1.2. This is locking a printer.
According to some websites, 8c0001 relates to the device name.
How does one link 8c0001 to those devices listed in the /dev folder?
I have done a ps -lp for all printers and have... (4 Replies)
Discussion started by: canman
4 Replies
3. Shell Programming and Scripting
My requirement is
I need to write a program in shell scripting to check 2 TCP unused unique port numbers in SOLARIS and I have to lock the same ports so that it will not be used in any other new process and the same port numbers should be used and locked in the LINUX machine to communicate... (2 Replies)
Discussion started by: sreeramr30
2 Replies
4. Red Hat
Hello all,
If anyone has time, I have a few questions:
How do I do the following in Linux. We are using Red Hat and Oracle Enterprise Linux, which is based on Red Hat too.
1. How to lock the account after a few (like 3) invalid password attempts?
2. How do you lock a screen after 30... (1 Reply)
Discussion started by: nstarz
1 Replies
5. UNIX for Advanced & Expert Users
Hi all,
I have to test some user priviliges. The goal is to be sure that an unauthorized user can't restart some modules (ssh, mysql etc...).
I'm trying to automate it with a shell script but in same cases I got the syslog broadcast message.
Is there any way to simply get a return code... (3 Replies)
Discussion started by: Dedalus
3 Replies
6. UNIX for Advanced & Expert Users
Hi Team,
I have a requirement to access a shared resource from the user and interrupt context. What type of locking mechanism I have to use for this. Can any body give advice on this.
Thanks in advance.
-Shiva (4 Replies)
Discussion started by: shivakoteswarra
4 Replies
flock(3UCB) SunOS/BSD Compatibility Library Functions flock(3UCB)
NAME
flock - apply or remove an advisory lock on an open file
SYNOPSIS
/usr/ucb/cc[ flag ... ] file ...
#include <sys/file.h>
int flock( fd, operation);
int fd, operation;
DESCRIPTION
flock() applies or removes an advisory lock on the file associated with the file descriptor fd. The compatibility version of flock() has
been implemented on top of fcntl(2) locking.
It does not provide complete binary compatibility.
Advisory locks allow cooperating processes to perform consistent operations on files, but do not guarantee exclusive access (that is, pro-
cesses may still access files without using advisory locks, possibly resulting in inconsistencies).
The locking mechanism allows two types of locks: shared locks and exclusive locks. More than one process may hold a shared lock for a file
at any given time, but multiple exclusive, or both shared and exclusive, locks may not exist simultaneously on a file.
A lock is applied by specifying an operation parameter LOCK_SH for a shared lock or LOCK_EX for an exclusive lock. The operation paramerer
may be ORed with LOCK_NB to make the operation non-blocking. To unlock an existing lock, the operation should be LOCK_UN.
Read permission is required on a file to obtain a shared lock, and write permission is required to obtain an exclusive lock. Locking a seg-
ment that is already locked by the calling process causes the old lock type to be removed and the new lock type to take effect.
Requesting a lock on an object that is already locked normally causes the caller to block until the lock may be acquired. If LOCK_NB is
included in operation, then this will not happen; instead, the call will fail and the error EWOULDBLOCK will be returned.
RETURN VALUES
flock() returns:
0 on success.
-1 on failure and sets errno to indicate the error.
ERRORS
EBADF The argument fd is an invalid descriptor.
EINVAL operation is not a valid argument.
EOPNOTSUPP The argument fd refers to an object other than a file.
EWOULDBLOCK The file is locked and the LOCK_NB option was specified.
SEE ALSO
lockd(1M), chmod(2), close(2), dup(2), exec(2), fcntl(2), fork(2), open(2), lockf(3C)
NOTES
Use of these interfaces should be restricted to only applications written on BSD platforms. Use of these interfaces with any of the system
libraries or in multi-thread applications is unsupported.
Locks are on files, not file descriptors. That is, file descriptors duplicated through dup(2) or fork(2) do not result in multiple
instances of a lock, but rather multiple references to a single lock. If a process holding a lock on a file forks and the child explicitly
unlocks the file, the parent will lose its lock. Locks are not inherited by a child process.
Processes blocked awaiting a lock may be awakened by signals.
Mandatory locking may occur, depending on the mode bits of the file. See chmod(2).
Locks obtained through the flock() mechanism under SunOS 4.1 were known only within the system on which they were placed. This is no
longer true.
SunOS 5.10 19 Jul 1994 flock(3UCB)