Locking a mailbox file in SHELL Programming on Linux
function my_lockfile ()
{
TEMPFILE="$1.$$"
LOCKFILE="$1.lock"
{ echo $$ > $TEMPFILE } >& /dev/null || {
echo "No permission to access the directory `dirname $TEMPFILE`"
return 1
}
ln $TEMPFILE $LOCKFILE >& /dev/null && {
rm -f $TEMPFILE
return 0
}
kill -0 `cat $LOCKFILE` >& /dev/null && {
rm -f $TEMPFILE
return 1
}
echo "Removing stale lock file"
rm -f $LOCKFILE
ln $TEMPFILE $LOCKFILE >& /dev/null && {
rm -f $TEMPFILE
return 0
}
rm -f $TEMPFILE
return 1
}
lock any kind of file
wait for a lock
until my_lockfile /etc/passwd ; do
sleep 1
done
# The body of the program might go here
# [...]
# Then to remove the lock,
rm -f /etc/passwd.lock
No comments:
Post a Comment