scripts/gestion/lock.py
pauget e0da11ea79 Centralisation du remplacement de os.getlogin
On utilise la variable SUDO_USER et sinon on se rabat sur un getuid

darcs-hash:20040910192447-41617-51511e6987093eae4473592bde71fa0bd73f0151.gz
2004-09-10 21:24:47 +02:00

50 lines
1.2 KiB
Python
Executable file

#!/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