Sponsored Content
Full Discussion: lock the file in linux
Operating Systems Linux Red Hat lock the file in linux Post 302349147 by sharadpisal on Monday 31st of August 2009 08:15:59 AM
Old 08-31-2009
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 ----------

Quote:
Originally Posted by pludi
Perl's flock() does give you a lock on a file, if you use LOCK_EX, and all other processes use that mechanism too. If they don't, you're out of luck. If you don't want the file to be modified, change the permissions to read-only for everyone else (but root will still be able to modify it).
That wont help if, all processes interested in having lock on perticular file, runs with same user id.
 

6 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

how to lock keyboard without using lock command

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

Lock File

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

Sheel Scripting to lock 2 TCP unused ports in solaris and linux

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

Security Question: Lock after invalid login, Session Lock and Required Minimum Password Length

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

Testing privileges -lock lockfile /var/lock/subsys/..- Permission denied

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

Linux lock problem

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(2)							System Calls Manual							  flock(2)

Name
       flock - apply or remove an advisory lock on an open file

Syntax
       #include <sys/file.h>

       #define	 LOCK_SH   1	/* shared lock */
       #define	 LOCK_EX   2	/* exclusive lock */
       #define	 LOCK_NB   4	/* don't block when locking */
       #define	 LOCK_UN   8	/* unlock */

       flock(fd, operation)
       int fd, operation;

Description
       The  system  call applies or removes an advisory lock on the file associated with the file descriptor, fd.  A lock is applied by specifying
       an operation parameter that is the inclusive OR of LOCK_SH or LOCK_EX and, possibly, LOCK_NB.  To unlock an existing lock, operation should
       be LOCK_UN.

       Advisory  locks allow cooperating processes to perform consistent operations on files, but do not guarantee consistency; that is, processes
       might still access files without using advisory locks, possibly resulting in inconsistencies.

       The locking mechanism allows two types of locks: shared locks and exclusive locks.  At any time, multiple shared locks can be applied to  a
       file.  However, multiple exclusive locks, or shared and exclusive locks cannot be applied simultaneously on a file.

       A  shared  lock can be upgraded to be an exclusive lock, and an exclusive lock can become shared, simply by specifying the appropriate lock
       type. This change results in the previous lock being released and the new lock applied. When upgrading, do not include  LOCK_NB	in  opera-
       tion, because there is a possibility that other processes have requests for locks, or have gained or released a lock.

       Requesting  a lock on an object that is already locked normally causes the caller to blocked until the lock can be acquired.  If LOCK_NB is
       included in operation, the call is not blocked; instead, the call fails and the error EWOULDBLOCK is returned.

       Locks are on files, not file descriptors.  That is, file descriptors duplicated through or call 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 loses its lock.

       Processes blocked awaiting a lock may be awakened by signals.

Return Values
       Zero is returned if the operation was successful; on an error, a -1 is returned and an error code is stored in the global variable, errno.

Diagnostics
       The call fails under the following conditions:

       [EWOULDBLOCK]  The file is locked and the LOCK_NB option was specified.

       [EBADF]	      The argument fd is an invalid descriptor.

       [EINVAL]       The argument fd refers to an object other than a file.

       [EOPNOTSUPP]   Invalid operation is requested.  The argument fd refers to a socket.

Restrictions
       File region locking is not supported over NFS.

See Also
       close(2), dup(2), execve(2), fork(2), open(2)

																	  flock(2)
All times are GMT -4. The time now is 02:23 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy