#!/usr/bin/env python # -*- coding: iso-8859-15 -*- """ Gestion de lock Copyright (C) Frédéric Pauget Licence : GPLv2 """ import os,string,time,sys, affich_tools def make_lock(lock_name, lock_comment='') : """ Création d'un lock """ lock_file = '/var/lock/' + lock_name if os.path.isfile(lock_file) : ### Lock existant # Lecture du lock fd = open(lock_file, "r") pid= fd.readline().strip() fd.close() # Informations sur le processus lockant if os.system( "ps %s > /dev/null 2>&1" % pid ) : # Le script lockant ne tourne plus os.remove(lock_file) else : # Il faut attendre a = affich_tools.anim('\tattente du lock') for i in range(8) : time.sleep(1) a.cycle() sys.stdout.write('\r') return make_lock(lock_name, lock_comment) ### Prise du lock lock_fd=open(lock_file, "w") lock_fd.write("%s\n%s" % (os.getpid(), lock_comment) ) lock_fd.close() def remove_lock( lock_name ) : """ Destruction du lock """ lock_file = '/var/lock/' + lock_name try : fd = open(lock_file, "r") if fd.readline().strip()=="%s" % os.getpid(): os.remove(lock_file) fd.close() except : None