def do_acquire(self, waitflag=False): locked = False if waitflag: blockflag = 0 else: blockflag = fcntl.LOCK_NB self.fd = posix.open(self.fn, O_CREAT | O_RDWR, 0600) try: fcntl.flock(self.fd, fcntl.LOCK_EX | blockflag) # locked it try: posix.ftruncate(self.fd, 0) posix.write(self.fd, ` os.getpid() ` + '\n') locked = True except: self.do_release() raise except IOError, x: if x.errno == errno.EWOULDBLOCK: # failed to lock posix.close(self.fd) del self.fd else: raise
def do_release(self): if self.fd is not None: posix.ftruncate(self.fd, 0) fcntl.flock(self.fd, fcntl.LOCK_UN) posix.close(self.fd) self.fd = None self._locked = False
def do_acquire(self, waitflag=False): locked = False if waitflag: blockflag = 0 else: blockflag = fcntl.LOCK_NB self.fd = posix.open(self.fn, O_CREAT | O_RDWR, 0600) try: fcntl.flock(self.fd, fcntl.LOCK_EX|blockflag) # locked it try: posix.ftruncate(self.fd, 0) posix.write(self.fd, `os.getpid()` + '\n') locked = True except: self.do_release() raise except IOError, x: if x.errno == errno.EWOULDBLOCK: # failed to lock posix.close(self.fd) del self.fd else: raise
def test_ftruncate(self): if hasattr(posix, 'ftruncate'): fp = open(test_support.TESTFN, 'w+') try: # we need to have some data to truncate fp.write('test') fp.flush() posix.ftruncate(fp.fileno(), 0) finally: fp.close()
def test_ftruncate(self): if hasattr(posix, "ftruncate"): fp = open(test_support.TESTFN, "w+") try: # we need to have some data to truncate fp.write("test") fp.flush() posix.ftruncate(fp.fileno(), 0) finally: fp.close()
def SetSpeedup(speedup): global f speedup = float(speedup) # Opening the file for reading and writing prevents blocking until a reader opens the file. if f is None: f = posix.open(FIFO, posix.O_RDWR | posix.O_CREAT) posix.ftruncate(f, 0) SEEK_SET = 0 posix.lseek(f, 0, SEEK_SET) posix.write(f, struct.pack("f", speedup))
def do_release(self): posix.ftruncate(self.fd, 0) fcntl.flock(self.fd, fcntl.LOCK_UN) posix.close(self.fd) del self.fd