[Python] programma già in esecuzione
Eriol
eriol a huine.org
Mar 29 Ago 2006 15:49:47 CEST
Alle 13:02, martedì 29 agosto 2006, Marco ha scritto:
> Mi servirebbe sapere se c'è qualcosa già nelle librerie di python per
> sapere se lo script che sto lanciato è già in esecuzione.
> Mi servirebbe impedire che un programma che gira ogni tot di tempo
> entri in esecuzione più volte.
Io farei uso di un lockfile dato che utilizzo un sistema unix. Non ho idea
se windows abbia un meccanismo apposito per questo stesso obiettivo.
Il codice che segue non puo` essere eseguito sotto windows (il modulo
fcntl e` disponibile solo per unix), ma forse con cygwin funziona.
import fcntl
import sys
lockfile = "/tmp/namescript.lock"
lock_fd = open(lockfile,"w")
#Se non riesco ad acquisire il lock sul file esco con un messaggio
#d'errore
try:
fcntl.flock(lock_fd , fcntl.LOCK_EX | fcntl.LOCK_NB)
except IOError:
sys.exit("Impossibile ottenere il lock su %s" % lockfile)
#
# Codice da eseguire
#
#Rilascio il lock
fcntl.flock(lock_fd, fcntl.LOCK_UN)
Spero sia d'aiuto.
--
Eriol - *p = NULL; - EIBTI
GPG Key ID 297BE0CA
Maggiori informazioni sulla lista
Python