From 3971bc230008a576b9afa9eda47147d88a584776 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 23 Nov 2005 18:35:19 +0000 Subject: add proper locking for archives git-svn-id: file:///home/lennart/svn/public/sse/trunk@44 5fbabb74-0606-0410-a5e4-b5cc6a42724e --- feed/sse_lock.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 feed/sse_lock.py (limited to 'feed/sse_lock.py') diff --git a/feed/sse_lock.py b/feed/sse_lock.py new file mode 100755 index 0000000..8fd0459 --- /dev/null +++ b/feed/sse_lock.py @@ -0,0 +1,48 @@ +#!/usr/bin/python +import os, errno, time + +def try_lock_file(fn): + + lp = "%s.%i" % (fn, os.getpid()) + + fd = os.open(lp, os.O_RDWR|os.O_CREAT, 0666) + + try: + os.link(lp, fn) + except OSError, e: + os.close(fd) + os.unlink(lp) + + if e.errno != errno.EEXIST: + raise e + + return False + + t = os.fstat(fd) + os.close(fd) + os.unlink(lp) + + return t.st_nlink >= 2 + +def unlock_file(fn): + + os.unlink(fn) + + +if __name__ == "__main__": + + if not try_lock_file("test.lock"): + print "FAILED" + else: + try: + print "LOCKED" + time.sleep(60) + finally: + unlock_file("test.lock") + + print "UNLOCKED" + + + + + -- cgit